JMS(三):MessageListener
2016-03-02 00:00
330 查看
消息监听器(Message Listener)
消息监听器是一个充当消息的异步事件处理器的对象,它实现了MessageListener接口,这个接口只有一个方法onMessage,在这个方法里,你可以定义当接收到消息之后的要做的操作。你可以用setMessageListener方法为消息消费者注册一个监听器。
有一点要注意,如果你先调用Connection的start,然后再调用setMessageListener,消息很可能接收不到,正确的做法是先注册监听,再启动Connection。
注册监听之后,一旦JMS容器有消费投递过来,消息消费(接收)者就会自动调用监听器的onMessage方法。这个方法的带有一个参数Message,这就接收到的消息。
消息监听器是一个充当消息的异步事件处理器的对象,它实现了MessageListener接口,这个接口只有一个方法onMessage,在这个方法里,你可以定义当接收到消息之后的要做的操作。你可以用setMessageListener方法为消息消费者注册一个监听器。
MessageListener listener = new MessageListener( {
public void onMessage(Message msg) { // } });
topicSubscriber.setMessageListener(listener); //注册监听 topicConnection.start();
有一点要注意,如果你先调用Connection的start,然后再调用setMessageListener,消息很可能接收不到,正确的做法是先注册监听,再启动Connection。
注册监听之后,一旦JMS容器有消费投递过来,消息消费(接收)者就会自动调用监听器的onMessage方法。这个方法的带有一个参数Message,这就接收到的消息。
public class Test2 { public static void main(String[] args) throws JMSException { //建立与消息服务器的连接: ConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost"); Connection connection = factory.createConnection(); connection.start(); //创建一个队列: Queue queue = new ActiveMQQueue("testQueue"); //创建一个会话: final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); //创建一个生产者: MessageProducer producer = session.createProducer(queue); //通过会话创建一个消息: for( int i =0;i<=2; i++ ){ Message message = session.createTextMessage("Hello JMS!"); //生产者把消息发送给服务器: producer.send(message); } System.out.println( "消息已经成功发送到服务器。" ); //创建一个消费者: MessageConsumer consumer = session.createConsumer(queue); consumer.setMessageListener( new MessageListener(){ @Override public void onMessage(Message message) { TextMessage text = (TextMessage) message; try { System.out.println( "内容: "+ text.getText() ); } catch (JMSException e) { e.printStackTrace(); } } }); } } // 这里是先启动然后在监听
相关文章推荐
- JMS(四): 点对点模型(P2P)
- JMS(五):订阅/发布模式(SUB/PUB)
- JMS(六):消息头
- JMS(七):DeliveryMode
- JMS(八):JMSReplyTo
- JMS(九): 收藏下...
- XMPP客户端登录开发详解
- OC高效率52之勿在分类中声明属性
- OC高效率52之使用“class-continuation分类”隐藏实现细节
- Java 内存区域和GC机制
- 天下数据支招如何识别IDC服务商是否优质
- IOS博客项目搭建-07-设置导航栏主题
- main函数
- 创业的第一百三十四天
- 抽象类和接口的区别
- 解决使用memcached-session-manager session共享超时问题
- python ATM取款机----运维开发初学(上篇)
- python ATM取款机----运维开发初学(下篇)
- CentOS安装iftop查看网络带宽使用情况
- mongodb启动不了:child process failed, exited with err