JMS(三):MessageListener

消息监听器(Message Listenerjava

    消息监听器是一个充当消息的异步事件处理器的对象,它实现了MessageListener接口,这个接口只有一个方法onMessage,在这个方法里,你能够定义当接收到消息以后的要作的操做。你能够用setMessageListener方法为消息消费者注册一个监听器。服务器

 

MessageListener listener = new MessageListener( {
      public void onMessage(Message msg) {          //      }
});
topicSubscriber.setMessageListener(listener); //注册监听
topicConnection.start();

    有一点要注意,若是你先调用Connectionstart,而后再调用setMessageListener,消息极可能接收不到,正确的作法是先注册监听,再启动Connectionsession

    注册监听以后,一旦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();
				}
			}
		});
	}
}

// 这里是先启动而后在监听
相关文章
相关标签/搜索