您好,登錄后才能下訂單哦!
小編給大家分享一下Apache中ActiveMQ消息傳遞的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
下載activeMQ:http://activemq.apache.org/
我這里用的是5.9.0版本
解壓縮apache-activemq-5.5.1-bin.zip,然后雙擊apache-activemq-5.5.1\bin\activemq.bat運行ActiveMQ程序。
啟動ActiveMQ以后,登陸:http://localhost:8161/admin/,創(chuàng)建一個Queue,命名為FirstQueue。
創(chuàng)建project:ActiveMQ,并導(dǎo)入apache-activemq-5.9.0\lib目錄下需要用到的jar文件,項目結(jié)構(gòu)如下圖所示:
package per.activemq.test; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.DeliveryMode; import javax.jms.Destination; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; public class Sender { private static final int SEND_NUMBER = 5; public static void main(String[] args) { // ConnectionFactory :連接工廠,JMS 用它創(chuàng)建連接 ConnectionFactory connectionFactory; // Connection :JMS 客戶端到JMS Provider 的連接 Connection connection = null; // Session: 一個發(fā)送或接收消息的線程 Session session; // Destination :消息的目的地;消息發(fā)送給誰. Destination destination; // MessageProducer:消息發(fā)送者 MessageProducer producer; // 構(gòu)造ConnectionFactory實例對象,此處采用ActiveMq的實現(xiàn)jar connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,"tcp://127.0.0.1:61616"); try { // 構(gòu)造從工廠得到連接對象 connection = connectionFactory.createConnection(); // 啟動 connection.start(); // 獲取操作連接 session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); // 獲取session注意參數(shù)值xingbo.xu-queue是一個服務(wù)器的queue,須在在ActiveMq的console配置 destination = session.createQueue("FirstQueue"); // 得到消息生成者【發(fā)送者】 producer = session.createProducer(destination); // 設(shè)置不持久化,此處學(xué)習(xí),實際根據(jù)項目決定 producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); // 構(gòu)造消息,此處寫死,項目就是參數(shù),或者方法獲取 sendMessage(session,producer); session.commit(); } catch (Exception e) { // TODO: handle exception } finally { try { if (null != connection) connection.close(); } catch (Throwable ignore) { } } } private static void sendMessage(Session session, MessageProducer producer) throws Exception { for (int i = 0; i < SEND_NUMBER; i++) { TextMessage message = session.createTextMessage("ActiveMQ發(fā)送的消息:"+i); // 發(fā)送消息到目的地方 System.out.println("發(fā)送消息,ActiveMQ發(fā)送的消息:"+i); producer.send(message); } } }
package per.activemq.test; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.MessageConsumer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; public class Receiver { public static void main(String[] args) { // ConnectionFactory :連接工廠,JMS 用它創(chuàng)建連接 ConnectionFactory connectionFactory; // Connection :JMS 客戶端到JMS Provider 的連接 Connection connection = null; // Session: 一個發(fā)送或接收消息的線程 Session session; // Destination :消息的目的地;消息發(fā)送給誰. Destination destination; // 消費者,消息接收者 MessageConsumer consumer; connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,"tcp://127.0.0.1:61616"); try { // 構(gòu)造從工廠得到連接對象 connection = connectionFactory.createConnection(); // 啟動 connection.start(); // 獲取操作連接 session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); // 獲取session注意參數(shù)值xingbo.xu-queue是一個服務(wù)器的queue,須在在ActiveMq的console配置 destination = session.createQueue("FirstQueue"); consumer = session.createConsumer(destination); while (true) { //設(shè)置接收者接收消息的時間,為了便于測試,這里誰定為100s TextMessage message = (TextMessage) consumer.receive(100000); if (null != message) { System.out.println("收到消息" + message.getText()); } else { break; } } } catch (Exception e) { // TODO: handle exception } finally { try { if (null != connection) connection.close(); } catch (Throwable ignore) { } } } }
最后接收者跟發(fā)送者在不同的機(jī)器上測試
項目所引用的jar最后在ActiveMQ下的lib中找,這樣不會出現(xiàn)版本沖突。
發(fā)送消息:ActiveMq 發(fā)送的消息1
發(fā)送消息:ActiveMq 發(fā)送的消息2
發(fā)送消息:ActiveMq 發(fā)送的消息3
發(fā)送消息:ActiveMq 發(fā)送的消息4
發(fā)送消息:ActiveMq 發(fā)送的消息5
而回到Sender中發(fā)現(xiàn)console界面出現(xiàn)如下信息:
收到消息ActiveMq 發(fā)送的消息1
收到消息ActiveMq 發(fā)送的消息2
收到消息ActiveMq 發(fā)送的消息3
收到消息ActiveMq 發(fā)送的消息4
收到消息ActiveMq 發(fā)送的消息5
很明顯有消息了
以上是“Apache中ActiveMQ消息傳遞的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。