生活随笔
收集整理的這篇文章主要介紹了
深入掌握JMS(四):实战Queue
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Queue實現的是點到點模型,在下面的例子中,啟動2個消費者共同監聽一個Queue,然后循環給這個Queue中發送多個消息,我們依然采用ActiveMQ。
?
view plaincopy to clipboardprint?
import?javax.jms.Connection;??import?javax.jms.DeliveryMode;??import?javax.jms.JMSException;??import?javax.jms.Message;??import?javax.jms.MessageConsumer;??import?javax.jms.MessageListener;??import?javax.jms.MessageProducer;??import?javax.jms.Queue;??import?javax.jms.Session;??import?javax.jms.TextMessage;??import?org.apache.activemq.ActiveMQConnectionFactory;??import?org.apache.activemq.command.ActiveMQQueue;????public?class?QueueTest?{??????public?static?void?main(String[]?args)?throws?Exception?{??????????ActiveMQConnectionFactory?factory?=?new?ActiveMQConnectionFactory("vm://localhost");???????????????Connection?connection?=?factory.createConnection();??????????connection.start();???????????????????????????????Queue?queue?=?new?ActiveMQQueue("testQueue");????????????????????Session?session?=?connection.createSession(false,?Session.AUTO_ACKNOWLEDGE);???????????????????????????????MessageConsumer?comsumer1?=?session.createConsumer(queue);??????????comsumer1.setMessageListener(new?MessageListener(){??????????????public?void?onMessage(Message?m)?{??????????????????try?{??????????????????????System.out.println("Consumer1?get?"?+?((TextMessage)m).getText());??????????????????}?catch?(JMSException?e)?{??????????????????????e.printStackTrace();??????????????????}??????????????}??????????});???????????????????????????????MessageConsumer?comsumer2?=?session.createConsumer(queue);??????????comsumer2.setMessageListener(new?MessageListener(){??????????????public?void?onMessage(Message?m)?{??????????????????try?{??????????????????????System.out.println("Consumer2?get?"?+?((TextMessage)m).getText());??????????????????}?catch?(JMSException?e)?{??????????????????????e.printStackTrace();??????????????????}??????????????}???????????????????????});???????????????????????????????MessageProducer?producer?=?session.createProducer(queue);??????????for(int?i=0;?i<10;?i++){??????????????producer.send(session.createTextMessage("Message:"?+?i));??????????}??????}??}??
?
? 運行這個例子會得到下面的輸出結果:
?
view plaincopy to clipboardprint?
Consumer1?get?Message:0??Consumer2?get?Message:1??Consumer1?get?Message:2??Consumer2?get?Message:3??Consumer1?get?Message:4??Consumer2?get?Message:5??Consumer1?get?Message:6??Consumer2?get?Message:7??Consumer1?get?Message:8??Consumer2?get?Message:9??
?
? 可以看出每個消息直被消費了一次,但是如果有多個消費者同時監聽一個Queue的話,無法確定一個消息最終會被哪一個消費者消費。
?
總結
以上是生活随笔為你收集整理的深入掌握JMS(四):实战Queue的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。