生活随笔
收集整理的這篇文章主要介紹了
深入掌握JMS(五):实战Topic
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
與Queue不同的是,Topic實(shí)現(xiàn)的是發(fā)布/訂閱模型,在下面的例子中,啟動(dòng)2個(gè)消費(fèi)者共同監(jiān)聽(tīng)一個(gè)Topic,然后循環(huán)給這個(gè)Topic中發(fā)送多個(gè)消息。
view plaincopy to clipboardprint?
import?javax.jms.Connection;??import?javax.jms.JMSException;??import?javax.jms.Message;??import?javax.jms.MessageConsumer;??import?javax.jms.MessageListener;??import?javax.jms.MessageProducer;??import?javax.jms.Session;??import?javax.jms.TextMessage;??import?javax.jms.Topic;??import?org.apache.activemq.ActiveMQConnectionFactory;??import?org.apache.activemq.command.ActiveMQTopic;????public?class?TopicTest?{??????public?static?void?main(String[]?args)?throws?Exception?{??????????ActiveMQConnectionFactory?factory?=?new?ActiveMQConnectionFactory("vm://localhost");???????????????Connection?connection?=?factory.createConnection();??????????connection.start();?????????????????????????????Topic?topic=?new?ActiveMQTopic("testTopic");??????????Session?session?=?connection.createSession(false,?Session.AUTO_ACKNOWLEDGE);??????????????????????????????MessageConsumer?comsumer1?=?session.createConsumer(topic);??????????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(topic);??????????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(topic);??????????for(int?i=0;?i<10;?i++){??????????????producer.send(session.createTextMessage("Message:"?+?i));??????????}??????}??}??
運(yùn)行后得到下面的輸出結(jié)果:
view plaincopy to clipboardprint?
Consumer1?get?Message:0??Consumer2?get?Message:0??Consumer1?get?Message:1??Consumer2?get?Message:1??Consumer1?get?Message:2??Consumer2?get?Message:2??Consumer1?get?Message:3??Consumer2?get?Message:3??Consumer1?get?Message:4??Consumer2?get?Message:4??Consumer1?get?Message:5??Consumer2?get?Message:5??Consumer1?get?Message:6??Consumer2?get?Message:6??Consumer1?get?Message:7??Consumer2?get?Message:7??Consumer1?get?Message:8??Consumer2?get?Message:8??Consumer1?get?Message:9??Consumer2?get?Message:9??
說(shuō)明每一個(gè)消息都會(huì)被所有的消費(fèi)者消費(fèi)。
總結(jié)
以上是生活随笔為你收集整理的深入掌握JMS(五):实战Topic的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。