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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java 消息机制 ActiveMQ入门实例

發布時間:2025/5/22 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 消息机制 ActiveMQ入门实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

詳見:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt180

1.下載ActiveMQ?
去官方網站下載:http://activemq.apache.org/?
我下載的時候是 ActiveMQ 5.8.0 Release版?

2.運行ActiveMQ?
解壓縮apache-activemq-5.8.0-bin.zip,然后雙擊apache-activemq-5.5.1\bin\activemq.bat運行ActiveMQ程序。?

啟動ActiveMQ以后,登陸:http://localhost:8161/admin/,創建一個Queue,命名為FirstQueue。?

3.創建Eclipse項目并運行?
創建java project:ActiveMQ-5.8,新建lib文件夾?
打開apache-activemq-5.8.0\lib目錄?
拷貝?
activemq-broker-5.8.0.jar?
activemq-client-5.8.0.jar?
geronimo-j2ee-management_1.1_spec-1.0.1.jar?
geronimo-jms_1.1_spec-1.1.1.jar?
slf4j-api-1.6.6.jar?
這5個jar文件到lib文件夾中,并Build Path->Add to Build Path?

結構如圖:?

?


Sender.java?

Java代碼??

  • package?com.lm.activemq;??

  • ??

  • /**?

  • ?*?@Header:?Sender.java?

  • ?*?類描述:?

  • ?*?@author:?lm?

  • ?*?@date?2013-7-17?上午10:52:42?

  • ?*?@Email??

  • ?*?@company?歡?

  • ?*?@addr?北京市朝陽區勁松?

  • ?*/??

  • 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?用它創建連接??

  • ????????ConnectionFactory?connectionFactory;?//?Connection?:JMS?客戶端到JMS??

  • ????????//?Provider?的連接??

  • ????????Connection?connection?=?null;?//?Session:?一個發送或接收消息的線程??

  • ????????Session?session;?//?Destination?:消息的目的地;消息發送給誰.??

  • ????????Destination?destination;?//?MessageProducer:消息發送者??

  • ????????MessageProducer?producer;?//?TextMessage?message;??

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

  • ????????connectionFactory?=?new?ActiveMQConnectionFactory(??

  • ????????????????ActiveMQConnection.DEFAULT_USER,??

  • ????????????????ActiveMQConnection.DEFAULT_PASSWORD,?"tcp://localhost:61616");??

  • ????????try?{?//?構造從工廠得到連接對象??

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

  • ????????????//?啟動??

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

  • ????????????//?獲取操作連接??

  • ????????????session?=?connection.createSession(Boolean.TRUE,??

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

  • ????????????//?獲取session注意參數值xingbo.xu-queue是一個服務器的queue,須在在ActiveMq的console配置??

  • ????????????destination?=?session.createQueue("FirstQueue");??

  • ????????????//?得到消息生成者【發送者】??

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

  • ????????????//?設置不持久化,此處學習,實際根據項目決定??

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

  • ????????????//?構造消息,此處寫死,項目就是參數,或者方法獲取??

  • ????????????sendMessage(session,?producer);??

  • ????????????session.commit();??

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

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

  • ????????}?finally?{??

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

  • ????????????????if?(null?!=?connection)??

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

  • ????????????}?catch?(Throwable?ignore)?{??

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

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

  • ????}??

  • ??

  • ????public?static?void?sendMessage(Session?session,?MessageProducer?producer)??

  • ????????????throws?Exception?{??

  • ????????for?(int?i?=?1;?i?<=?SEND_NUMBER;?i++)?{??

  • ????????????TextMessage?message?=?session.createTextMessage("ActiveMq?發送的消息"??

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

  • ????????????//?發送消息到目的地方??

  • ??

  • ????????????System.out.println("發送消息:"?+?"ActiveMq?發送的消息"?+?i);??

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

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

  • ????}??

  • }??



  • Receiver.java?

    Java代碼??

  • package?com.lm.activemq;??

  • ??

  • /**?

  • ?*?@Header:?Receiver.java?

  • ?*?類描述:?

  • ?*?@author:?lm?

  • ?*?@date?2013-7-17?上午10:52:58?

  • ?*?@Email??

  • ?*?@company?歡?

  • ?*?@addr?北京市朝陽區勁松?

  • ?*/??

  • 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?用它創建連接??

  • ????????ConnectionFactory?connectionFactory;??

  • ????????//?Connection?:JMS?客戶端到JMS?Provider?的連接??

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

  • ????????//?Session:?一個發送或接收消息的線程??

  • ????????Session?session;??

  • ????????//?Destination?:消息的目的地;消息發送給誰.??

  • ????????Destination?destination;??

  • ????????//?消費者,消息接收者??

  • ????????MessageConsumer?consumer;??

  • ????????connectionFactory?=?new?ActiveMQConnectionFactory(??

  • ????????????????ActiveMQConnection.DEFAULT_USER,??

  • ????????????????ActiveMQConnection.DEFAULT_PASSWORD,?"tcp://localhost:61616");??

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

  • ????????????//?構造從工廠得到連接對象??

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

  • ????????????//?啟動??

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

  • ????????????//?獲取操作連接??

  • ????????????session?=?connection.createSession(Boolean.FALSE,??

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

  • ????????????//?獲取session注意參數值xingbo.xu-queue是一個服務器的queue,須在在ActiveMq的console配置??

  • ????????????destination?=?session.createQueue("FirstQueue");??

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

  • ????????????while?(true)?{??

  • ????????????????//?設置接收者接收消息的時間,為了便于測試,這里誰定為100s??

  • ????????????????TextMessage?message?=?(TextMessage)?consumer.receive(100000);??

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

  • ????????????????????System.out.println("收到消息"?+?message.getText());??

  • ????????????????}?else?{??

  • ????????????????????break;??

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

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

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

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

  • ????????}?finally?{??

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

  • ????????????????if?(null?!=?connection)??

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

  • ????????????}?catch?(Throwable?ignore)?{??

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

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

  • ????}??

  • }??



  • 5.測試過程?
    先運行:Receiver.java?
    再運行:Sender.java?

    可以看到結果?
    Sender運行后:?
    發送消息:ActiveMq 發送的消息1?
    發送消息:ActiveMq 發送的消息2?
    發送消息:ActiveMq 發送的消息3?
    發送消息:ActiveMq 發送的消息4?
    發送消息:ActiveMq 發送的消息5?

    Receiver運行后:?
    收到消息ActiveMq 發送的消息1?
    收到消息ActiveMq 發送的消息2?
    收到消息ActiveMq 發送的消息3?
    收到消息ActiveMq 發送的消息4?
    收到消息ActiveMq 發送的消息5?

    要想看到不同的輸出內容,通過點擊如下圖的按鈕切換console?

    ?


    在Receiver.java中,可以設置一個時間,比如receive(500000),如下代碼所示:?

    Java代碼??

  • TextMessage?message?=?(TextMessage)?consumer.receive(500000);??


  • 這個時候運行Receiver.java的話,會使得這個Receiver.java一直運行500秒,在eclipse中可以發現:?




    點擊那個紅色方塊可以手動停止運行程序?

    ?

    轉載于:https://www.cnblogs.com/grefr/p/6094979.html

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的java 消息机制 ActiveMQ入门实例的全部內容,希望文章能夠幫你解決所遇到的問題。

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