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();
				}
			}
		});
	}
}

// 這裏是先啓動而後在監聽
相關文章
相關標籤/搜索