今天就跟大家聊聊有關(guān)ActiveMQ中間消息件如何在Java項(xiàng)目中使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
目前創(chuàng)新互聯(lián)建站已為成百上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、綿陽(yáng)服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、維西網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
消息一共有兩種接收和發(fā)送形式:點(diǎn)對(duì)點(diǎn)和發(fā)布定閱模式,也就是“一對(duì)一”和“一對(duì)多”。
1.導(dǎo)包(maven):
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-client</artifactId> <version>5.13.4</version> </dependency>
2.開(kāi)始寫(xiě)類(lèi),提供者(發(fā)送者)和消費(fèi)者(接收者)是兩個(gè)不同的項(xiàng)目,我們先創(chuàng)建普通的maven項(xiàng)目,而不是web項(xiàng)目點(diǎn)對(duì)點(diǎn)的方式(消息只能被消費(fèi)一次,如果同時(shí)有多個(gè)消費(fèi)者,誰(shuí)先搶到就是誰(shuí)的)
消息提供者
public static void main(String[] args) throws JMSException { //創(chuàng)建連接工廠,這個(gè)參數(shù)就是自己的activeMQ的地址 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616"); //2.創(chuàng)建連接 Connection connection = connectionFactory.createConnection(); //3.啟動(dòng)連接 connection.start(); //4.獲取session(會(huì)話對(duì)象) /* arg0 是否啟用事務(wù) arg1 消息的確認(rèn)方式 自動(dòng)確認(rèn) */ Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); //5.創(chuàng)建一個(gè)隊(duì)列對(duì)象,名稱(chēng) Queue firstQueue = session.createQueue("firstQueue"); //6.創(chuàng)建一個(gè)消息的生產(chǎn)者對(duì)象 // Destination destination = ;//目標(biāo)對(duì)象 MessageProducer producer = session.createProducer(firstQueue); //7.創(chuàng)建一個(gè)消息 TextMessage textMessage = session.createTextMessage("歡迎來(lái)到奇的天喻軟件"); //8.發(fā)送消息 producer.send(textMessage); //9.關(guān)閉資源 producer.close(); session.close(); connection.close(); }
消息消費(fèi)者
前幾步是一樣的,都是創(chuàng)建連接,只有第6步不一樣,創(chuàng)建的是一個(gè)消費(fèi)者
public static void main(String[] args) throws JMSException, IOException { ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616"); //2.創(chuàng)建連接 Connection connection = connectionFactory.createConnection(); //3.啟動(dòng)連接 connection.start(); //4.獲取session(會(huì)話對(duì)象) /* arg0 是否啟用事務(wù) arg1 消息的確認(rèn)方式 自動(dòng)確認(rèn) */ Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); //5.創(chuàng)建一個(gè)隊(duì)列對(duì)象,名稱(chēng) Queue firstQueue = session.createQueue("firstQueue"); //6.創(chuàng)建消息消費(fèi)者對(duì)象 MessageConsumer consumer = session.createConsumer(firstQueue); //7.設(shè)置監(jiān)聽(tīng) consumer.setMessageListener(new MessageListener() { @Override public void onMessage(Message message) { TextMessage textMessage = (TextMessage)message; try { System.out.println("提取的消息是"+textMessage.getText()); } catch (JMSException e) { e.printStackTrace(); } } }); //8.等待鍵盤(pán)輸入 //目的是為了讓程序停止來(lái)看效果 System.in.read(); //9.關(guān)閉資源 consumer.close(); session.close(); connection.close(); }
發(fā)布訂閱模式(發(fā)布消息后,只有在之前運(yùn)行的消費(fèi)者才能收到,消息被任何一個(gè)消費(fèi)者消費(fèi)后,以后啟動(dòng)的消費(fèi)者不能消費(fèi)之前的消息)
消息提供者
//創(chuàng)建連接工廠 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616"); //2.創(chuàng)建連接 Connection connection = connectionFactory.createConnection(); //3.啟動(dòng)連接 connection.start(); //4.獲取session(會(huì)話對(duì)象) /* arg0 是否啟用事務(wù) arg1 消息的確認(rèn)方式 自動(dòng)確認(rèn) */ Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); //5 Topic topic = session.createTopic("first-topic"); //6.創(chuàng)建一個(gè)消息的生產(chǎn)者對(duì)象 // Destination destination = ;//目標(biāo)對(duì)象 MessageProducer producer = session.createProducer(topic); //7.創(chuàng)建一個(gè)消息 TextMessage textMessage = session.createTextMessage("歡迎來(lái)到奇的天喻軟件"); //8.發(fā)送消息 producer.send(textMessage); //9.關(guān)閉資源 producer.close(); session.close(); connection.close();
消費(fèi)者
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616"); //2.創(chuàng)建連接 Connection connection = connectionFactory.createConnection(); //3.啟動(dòng)連接 connection.start(); //4.獲取session(會(huì)話對(duì)象) /* arg0 是否啟用事務(wù) arg1 消息的確認(rèn)方式 自動(dòng)確認(rèn) */ Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); //5 Topic topic = session.createTopic("first-topic"); //6.創(chuàng)建消息消費(fèi)者對(duì)象 MessageConsumer consumer = session.createConsumer(topic); //7.設(shè)置監(jiān)聽(tīng) consumer.setMessageListener(new MessageListener() { @Override public void onMessage(Message message) { TextMessage textMessage = (TextMessage)message; try { System.out.println("提取的消息是"+textMessage.getText()); } catch (JMSException e) { e.printStackTrace(); } } }); //8.等待鍵盤(pán)輸入 //目的是為了讓程序停止來(lái)看效果 System.in.read(); //9.關(guān)閉資源 consumer.close(); session.close(); connection.close();
看完上述內(nèi)容,你們對(duì)ActiveMQ中間消息件如何在Java項(xiàng)目中使用有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。
網(wǎng)站標(biāo)題:ActiveMQ中間消息件如何在Java項(xiàng)目中使用
分享網(wǎng)址:http://aaarwkj.com/article0/gpghio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷(xiāo)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、電子商務(wù)、用戶體驗(yàn)、搜索引擎優(yōu)化、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)