ActiveMQ—消息队列
来源:互联网 发布:博罗县网络问政杨村镇 编辑:程序博客网 时间:2024/06/05 15:36
ActiveMQ的作用分析
- 是Apache出品,最流行的,能力强劲的开源消息总线,完全支持JSM1.1和J2EE规范实现
- 防止拥堵,解决大批量并发访问问题
- 工作原理
- 使用场景
1.用户注册,重点用户信息数据库保存,发短信、发邮件,增加业务处理复杂度,这时候使用MQ,将发短信、发邮件,通知MQ,由另外服务平台完成
2.搜索平台、缓存平台
查询数据,建立缓存、索引,不从数据库查询,从缓存或者索引库查询
当增删改数据时,发送消息给MQ,缓存平台、索引平台从MQ获取到这个消息,更新缓存或者索引
ActiveMQ使用的是标准的生产者和消费者模型
- 有两种数据结构Queue、Topic
1.Queue队列:生产者生产了一个消息,只能有一个消费者消费(一对一)
2.Topic话题:生产者生产了一个消息,可以被多个消费者消费(一对多)
使用Java程序操作ActiveMQ
- 注意:在Java程序员的实际开发中,不需要默写出ActiveMQ代码
- 步骤1.在STS软件中创建一个Maven项目(点击Ctrl+n)
- 步骤2.导入相关jar包,使用Maven坐标
- 步骤3.编写生产者代码
// 消息生产者@Testpublic void testProduce() throws JMSException { // 连接工厂 // new ActiveMQConnectionFactory(userName, password, brokerURL)使用默认用户名,密码,路径 // 路径:tcp://host:61616 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(); // 获得一个链接 Connection connection = connectionFactory.createConnection(); // 建立会话 Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE); // 创建队列或者话题对象 Queue queue = session.createQueue("HelloWorld"); // 创建生产者或者消费者 MessageProducer messageProducer = session.createProducer(queue); // 发送消息 for (int i = 0; i < 10; i++) { messageProducer.send(session.createTextMessage("你好,activeMQ:" + i)); } // 提交操作 session.commit();}
执行之后结果:
- 编写消费者代码
// 创建直接消费的消费者对象@Testpublic void testConsumerMQ() throws JMSException { // 连接工厂 // new ActiveMQConnectionFactory(userName, password, // brokerURL)使用默认用户名,密码,路径 // 路径:tcp://host:61616 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(); // 获得一个链接 Connection connection = connectionFactory.createConnection(); // 开启一个链接 connection.start(); // 建立会话,第一个参数:是否使用事务,操作消息队列后,必须使用session.commit(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 创建队列或者话题对象 Queue queue = session.createQueue("HelloWorld"); // 创建消费者 MessageConsumer consumer = session.createConsumer(queue); while(true) { // 参数表示几秒 TextMessage message = (TextMessage) consumer.receive(1000); if (message != null) { System.out.println(message); } else { break; } }}// 创建使用监听器的消费者代码@Testpublic void testConsumerMQ2() throws JMSException { // 连接工厂 // new ActiveMQConnectionFactory(userName, password, // brokerURL)使用默认用户名,密码,路径 // 路径:tcp://host:61616 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(); // 获得一个链接 Connection connection = connectionFactory.createConnection(); // 开启一个链接 connection.start(); // 建立会话,第一个参数:是否使用事务,操作消息队列后,必须使用session.commit(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 创建队列或者话题对象 Queue queue = session.createQueue("HelloWorld"); // 创建消费者 MessageConsumer consumer = session.createConsumer(queue); consumer.setMessageListener(new MessageListener() { // 每次接收消息,自动调用onMessage public void onMessage(Message message) { TextMessage textMessage = (TextMessage) message; System.out.println(textMessage); } });}
执行之后下过如下
阅读全文
0 0
- ActiveMQ—消息队列
- ActiveMQ——消息队列基础篇
- ActiveMQ实现消息队列
- ActiveMQ 消息队列
- 队列消息ActiveMq
- 深入浅出 消息队列 ActiveMQ
- 消息队列中间件ActiveMQ
- 深入浅出 消息队列 ActiveMQ
- 深入浅出 消息队列 ActiveMQ
- 深入浅出 消息队列 ActiveMQ .
- 消息队列ActiveMQ
- 深入浅出 消息队列 ActiveMQ
- 深入浅出 消息队列 ActiveMQ
- 深入浅出 消息队列 ActiveMQ
- 深入浅出 消息队列 ActiveMQ
- 深入浅出 消息队列 ActiveMQ
- 深入浅出 消息队列 ActiveMQ
- 消息队列------ActiveMQ
- window.onload和$("document").ready()的区别
- x264编译-yasm开启时make错误,common/x86/const-a.o No such file
- IT行业风投
- 复习杂谈12.20
- 流式布局
- ActiveMQ—消息队列
- springboot整合kafka
- MySQL半同步复制--after_commit
- cas sso oauth openid saml的联系与区别
- OpenCV中矩阵类详解之三:CvMat,Mat和IplImage之间的转化和拷贝
- 可变参数函数的基本原理及使用实现
- vue 滚动条实现平滑滚动到某个位置
- angluar 简单的小购物车
- viewPager本地图片自动轮播