日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ActiveMQ 部署及发送接收消息

發(fā)布時間:2025/3/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ActiveMQ 部署及发送接收消息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ActiveMQ 部署及發(fā)送接收消息

一、???????????下載

下載地址:http://activemq.apache.org/?我這里使用的版本為當前最新5.8.0。

下載版本有Windows和Linux兩個版本,且都分為32位和64位。根據自己需要選擇下載。

二、???????????安裝

我這里下載的為windows的32位版本(apache-activemq-5.8.0-bin.zip),下載后直接解壓到需要安裝的目錄或在直接解壓到當前目錄也可,解壓完安裝也完成。


解壓后目錄如上圖,里面包含了示例和文檔,及所有的jar包。

?

三、???????????運行

進入到bin目錄(apache-activemq-5.8.0\bin),雙擊activemq.bat,就會運行,運行截圖如下:



此時表示ActiveMQ已經在運行了,當然正常生產環(huán)境下可以設置作為服務在后臺運行,并且隨系統(tǒng)啟動而啟動。

四、???????????測試

ActiveMQ自帶了一套管理系統(tǒng),訪問http://localhost:8161/admin/,會出現需要輸入用戶名和密碼的頁面如下:



默認用戶名和密碼都是admin,進入后則為主界面:



在這個界面上,我們可以管理隊列及其他的一些功能,為了下面的繼續(xù),我們在這里創(chuàng)建一個Queue和一個Topic。



點擊目錄上的Queues進入創(chuàng)建Queue頁面,輸入Queue名稱,點擊Create后下面就創(chuàng)建了G2Queue的queue隊列。




這里也可以不用這樣手工創(chuàng)建,在發(fā)送端指定了一個Queue或Topic名字后,會自動創(chuàng)建一個隊列,如上面的choice.queue和FirstQueue都是我測試程序時,程序里面指定的Queue名稱,自動創(chuàng)建的。

同樣的方式創(chuàng)建一個Topic,如下:



五、???????????發(fā)送消息

創(chuàng)建一個新的項目,我這里是創(chuàng)建的webproject名稱為ActiveMQ,引入ActiveMQ的jar包,整個工程結構如下:


?

此段代碼從網上直接copy,只是稍作修改:

[java]?view plaincopy

  • import?java.util.Random;??

  • ???

  • import?javax.jms.Connection;??

  • import?javax.jms.ConnectionFactory;??

  • import?javax.jms.DeliveryMode;??

  • import?javax.jms.Destination;??

  • import?javax.jms.JMSException;??

  • import?javax.jms.MessageProducer;??

  • import?javax.jms.Session;??

  • import?javax.jms.TextMessage;??

  • ???

  • import?org.apache.activemq.ActiveMQConnectionFactory;??

  • ???

  • public?class?SendMessage?{??

  • ????private?static?final?String?url?=?"tcp://localhost:61616";??

  • ????private?static?final?String?QUEUE_NAME?=?"G2Queue";??

  • ???

  • ????public?void?sendMessage()?throwsJMSException?{??

  • ???????//?JMS?客戶端到JMSProvider?的連接??

  • ???????Connection?connection?=?null;??

  • ???????try?{??

  • ???????????//?連接工廠,JMS?用它創(chuàng)建連接??

  • ???????????//?構造ConnectionFactory實例對象,此處采用ActiveMq的實現jar??

  • ???????????ConnectionFactory?connectionFactory?=?newActiveMQConnectionFactory(url);??

  • ???????????connection?=?(Connection)connectionFactory.createConnection();??

  • ???????????//?啟動連接??

  • ???????????connection.start();??

  • ???????????//Session:發(fā)送或接收消息的線程??

  • ???????????//?獲取session??

  • ???????????Session?session?=?(Session)?connection.createSession(false,??

  • ??????????????????Session.AUTO_ACKNOWLEDGE);??

  • ???????????//?消息的目的地,消息發(fā)送到那個隊列??

  • ???????????Destination?destination?=?session.createQueue(QUEUE_NAME);??

  • ???????????//MessageProducer:消息發(fā)送者(生產者)??

  • ???????????//?創(chuàng)建消息發(fā)送者??

  • ???????????MessageProducer?producer?=session.createProducer(destination);??

  • ???????????//?設置是否持久化??

  • ???????????//DeliveryMode.NON_PERSISTENT:不持久化??

  • ???????????//DeliveryMode.PERSISTENT:持久化??

  • ???????????producer.setDeliveryMode(DeliveryMode.PERSISTENT);??

  • ????????????

  • ???????????String?msg?=?"";??

  • ???????????int?i?=?0;??

  • ????????do?{??

  • ????????????msg?=?"第"+i?+?"次發(fā)送的消息:"+new?Random();??

  • ????????????????TextMessagemessage?=?session.createTextMessage(msg);??

  • ????????????????Thread.sleep(1000);??

  • ????????????????//?發(fā)送消息到目的地方??

  • ???????????????producer.send(message);??

  • ????????????????System.out.println("發(fā)送消息:"?+msg);??

  • ????????????????i++;??

  • ????????}?while?(i<1000);??

  • ???????}?catch?(Exception?e)?{??

  • ???????????e.printStackTrace();??

  • ???????}??

  • ????}??

  • ???

  • ????public?static?void?main(String[]?args)?{??

  • ???????SendMessage?sndMsg?=?newSendMessage();??

  • ???????try?{??

  • ???????????sndMsg.sendMessage();??

  • ???????}?catch?(Exception?ex)?{??

  • ???????????System.out.println(ex.toString());??

  • ???????}??

  • ????}??

  • }??




  • 運行結果如下:

    六、???????????接收消息


    [java]?view plaincopy

  • package?cn.g2room.mq.test;??

  • ???

  • import?javax.jms.Connection;??

  • import?javax.jms.ConnectionFactory;??

  • import?javax.jms.Destination;??

  • import?javax.jms.JMSException;??

  • import?javax.jms.Message;??

  • import?javax.jms.MessageConsumer;??

  • import?javax.jms.Session;??

  • import?javax.jms.TextMessage;??

  • ???

  • import?org.apache.activemq.ActiveMQConnectionFactory;??

  • ???

  • /**?

  • ?*?消息接收類?

  • ?*?

  • ?*?@createTime:Apr?7,?2013?5:11:11?PM?

  • ?*?@author:<a?href="mailto:252909344@qq.com">迷蝶</a>?

  • ?*?@version:0.1?

  • ?*@lastVersion:?0.1?

  • ?*?@updateTime:?

  • ?*@updateAuthor:?<a?href="mailto:252909344@qq.com">迷蝶</a>?

  • ?*?@changesSum:?

  • ?*?

  • ?*/??

  • public?class?ReceiveMessage?{??

  • ?????????privatestatic?final?String?url?=?"tcp://localhost:61616";??

  • ?????????privatestatic?final?String?QUEUE_NAME?=?"G2Queue";??

  • ???

  • ?????????publicvoid?receiveMessage()?{??

  • ???????????????????Connectionconnection?=?null;??

  • ???????????????????try{??

  • ????????????????????????????try{??

  • ?????????????????????????????????????ConnectionFactoryconnectionFactory?=?new?ActiveMQConnectionFactory(??

  • ????????????????????????????????????????????????????????url);??

  • ?????????????????????????????????????connection=?connectionFactory.createConnection();??

  • ????????????????????????????}catch?(Exception?e)?{??

  • ?????????????????????????????????????System.out.println(e.toString());??

  • ????????????????????????????}??

  • ????????????????????????????connection.start();??

  • ????????????????????????????Sessionsession?=?connection.createSession(false,??

  • ???????????????????????????????????????????????Session.AUTO_ACKNOWLEDGE);??

  • ????????????????????????????Destinationdestination?=?session.createQueue(QUEUE_NAME);??

  • ????????????????????????????//消息接收者,也就是消費者??

  • ????????????????????????????MessageConsumerconsumer?=?session.createConsumer(destination);??

  • ?????????????????????????????

  • ????????????????????????????consumeMessagesAndClose(connection,session,?consumer);??

  • ???????????????????}catch?(Exception?e)?{??

  • ????????????????????????????System.out.println(e.toString());??

  • ???????????????????}??

  • ?????????}??

  • ?????????/**?

  • ??????????*?接收和關閉消息,如遇到消息內容為close則,關閉連接?

  • ??????????*?

  • ??????????*?@param?connection???JMS?客戶端到JMSProvider?的連接?

  • ??????????*?@param?session???????????????????發(fā)送或接收消息的線程?

  • ??????????*?@param?consumer??????????????消息接收對象?

  • ??????????*?@throws?JMSException?

  • ??????????*?@auther?<ahref="mailto:252909344@qq.com">迷蝶</a>?

  • ??????????*?Apr?8,?2013?10:31:55?AM?

  • ??????????*/??

  • ?????????protectedvoid?consumeMessagesAndClose(Connection?connection,??

  • ????????????????????????????Sessionsession,?MessageConsumer?consumer)?throws?JMSException?{??

  • ???????????????????do{??

  • ????????????????????????????Messagemessage?=?consumer.receive(1000);??

  • ????????????????????????????if("close".equals(message)){??

  • ?????????????????????????????????????consumer.close();??

  • ?????????????????????????????????????session.close();??

  • ?????????????????????????????????????connection.close();??

  • ????????????????????????????}??

  • ????????????????????????????if(message?!=?null)?{??

  • ?????????????????????????????????????onMessage(message);??

  • ????????????????????????????}??

  • ???????????????????}while?(true);??

  • ????????????????????

  • ?????????}??

  • ???

  • ?????????publicvoid?onMessage(Message?message)?{??

  • ???????????????????try{??

  • ????????????????????????????if(message?instanceof?TextMessage)?{??

  • ?????????????????????????????????????TextMessagetxtMsg?=?(TextMessage)?message;??

  • ?????????????????????????????????????Stringmsg?=?txtMsg.getText();??

  • ?????????????????????????????????????System.out.println("Received:"?+?msg);??

  • ????????????????????????????}??

  • ???????????????????}catch?(Exception?e)?{??

  • ????????????????????????????e.printStackTrace();??

  • ???????????????????}??

  • ???

  • ?????????}??

  • ???

  • ?????????publicstatic?void?main(String?args[])?{??

  • ???????????????????ReceiveMessagerm?=?new?ReceiveMessage();??

  • ???????????????????rm.receiveMessage();??

  • ?????????}??

  • }??




  • 運行結果如下:


    ?


    轉載于:https://blog.51cto.com/liyunhua/1696310

    總結

    以上是生活随笔為你收集整理的ActiveMQ 部署及发送接收消息的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。