apache-activemq(三)
来源:互联网 发布:音悦台点歌机加歌软件 编辑:程序博客网 时间:2024/05/29 10:41
使用第二种方式接收消息—注册监听器
首先建立一个class, 这个class 必须实现 MessageListener接口.
package com.zero.activemq;import javax.jms.JMSException;import javax.jms.Message;import javax.jms.MessageListener;import javax.jms.TextMessage;/** * 实现messageListener接口 * @author samuel * */public class Listener1 implements MessageListener { /** * 传输的消息 */ public void onMessage(Message message) { try { if (message instanceof TextMessage) { TextMessage txtMsg = (TextMessage) message; String msg = txtMsg.getText(); System.out.println("Received: " + msg); } else { System.out.println("this is error"); } } catch (JMSException e) { e.printStackTrace(); } }}
其次创建消费者类, 该类和第一种消费者类基本上是一样的, 不同的地方就是在接收消息的方式上不同.
package com.zero.activemq;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.Destination;import javax.jms.MessageConsumer;import javax.jms.Session;import org.apache.activemq.ActiveMQConnection;import org.apache.activemq.ActiveMQConnectionFactory;/** * 创建消息并发送消息 * * 测试失败 没有找出问题在哪里 * @author samuel * */public class ActiveConsumer2 { // 系统默认的 用户名称 用户密码 连接地址 private static final String USER_NAME = ActiveMQConnection.DEFAULT_USER; private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD; private static final String BROKE_URL = ActiveMQConnection.DEFAULT_BROKER_URL; public void run() { ConnectionFactory connectionFactory = null; Connection connection = null; Session session; Destination destination; MessageConsumer messageConsumer; try { // 实例化activemq的工厂 connectionFactory = new ActiveMQConnectionFactory(USER_NAME, PASSWORD, BROKE_URL); // 使用对象工厂创建连接对象 connection = connectionFactory.createConnection(); connection.start(); // 使用连接对象创建Session /* * @parms true: true 开始session服务 false 不需要session * @parms Session.AUTO_ACKNOWLEDGE 自动接收消息 有四种类似 */ session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); // 创建消息队列 destination = session.createQueue("firstQueue"); // 创建消息消费者 messageConsumer = session.createConsumer(destination); // 设置监听器接收消息 messageConsumer.setMessageListener(new Listener1()); /** * 对比第一种的接收消息方式 */ /* while (true) { // 这个时间但是是 毫秒 TextMessage textMessage = (TextMessage) messageConsumer.receive(100000); if(null != textMessage) { System.out.println(textMessage.getText()); } else { System.out.println("111111"); } }*/ }catch (Exception e) { e.printStackTrace(); }finally { // /****一定不能 connection.close()****/ } } public static void main(String[] args) { new ActiveConsumer2().run(); } }
注意点:
使用注册监听器的方式 一定不能关闭connection对象. 否则就接收不到消息
0 0
- apache-activemq(三)
- Apache ActiveMQ教程(三)
- Apache ActiveMQ教程(三)
- Apache ActiveMQ
- Apache ActiveMQ
- Apache ActiveMQ
- Apache ActiveMQ
- Apache ActiveMQ
- apache-activemq
- Apache ActiveMQ
- Apache ActiveMQ
- Apache ActiveMQ
- Apache ActiveMQ
- Apache ActiveMQ
- Apache ActiveMQ
- ActiveMQ 三
- ActiveMQ(三)
- ActiveMQ(三)
- 怎么用快启动U盘启动盘制作工具将U盘制作成一个多系统安装盘
- CAEAGLLayer
- 日志组件slf4j介绍及配置详解
- RecyclerView添加onItemClickListener更佳的解决方案
- 树莓派摄像头模块没有/dev/video0设备节点的问题
- apache-activemq(三)
- Eclipse中安装部署maven插件
- mac画图工具 OmniGraffle (三)基础绘图和模具
- UIFont 字体设置
- Theano LSTM代码解析
- CodeForces 135A Replacement
- Mac_您不能拷贝项目“”,因为它的名称太长或包括的字符在目的宗卷上无效
- linux内核device tree的初始化流程
- Android 自动广告轮播图