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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

activemq 开启监听_ActiveMQ 消息监听 MessageListener 的使用

發布時間:2023/11/27 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 activemq 开启监听_ActiveMQ 消息监听 MessageListener 的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

剛學 ActiveMQ, 最開始搭建環境的時候引入的jar 包,幾個核心的jar jms.jar,?httpcore.jar ,?httpclient.jar,?activemq-all.jar 準備完畢,啟動junit 發現有好些個class 找不到,比如 PoolingClientConnectionManager 等,老是報 classnotfound 的錯誤,打開源代碼一看,原來是引入的版本過低,將其版本升級到 4.2.1 就解決問題了。

ActiveMQ 最關心的就是消息的發送與接收了,消息發送不是問題,主要是消息接收,或者說是讓消息不停地接收。

接收消息有兩種方式,

方式一:

while(flag){

TextMessage message = (TextMessage)consumer.receive(1000 * 100);

if(message != null){

log.info("receive message : "+ message.getText());

if("stop".equals( message.getText())){

flag = false;

}

}

}

log.info("receiver server stop...");

這樣就可以不間斷地接收消息,當向客戶端發送一個 “stop” 的時候,客戶端進程將會結束。

方法二:

使用?MessageListener,開始學習MessageListener 的時候,無非就是在網上找些例子抄抄,實現代碼如下:

consumer.setMessageListener(new MessageListener(){

@Override

public void onMessage(Message msg) {

// TODO Auto-generated method stub

TextMessage message = (TextMessage)msg;

try {

log.info("receive message : "+ message.getText());

} catch (JMSException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

});

這是網上出現最多的helloworld 級別的?MessageListener ?使用方式,但我把代碼抄完了之后一運行,發現什么都沒有發生,在ActiveMQ 控制臺上也沒有看到消息被接收了。

原來,網上抄了這段代碼并不是一段完整的代碼,

首先理解下“監聽”, 上面的這段程序雖然注冊了監聽,但監聽也有一個生命周期,在main方法里面或者 @Test 里面調用了之后,程序會立馬接收,監聽的生命周期也將結束,不會再起作用。

那么怎么解決呢?那就要讓這段程序不被結束,then how? see the code as below:

boolean flag = true;

while(flag){

Thread.sleep(1000 * 100);

}這樣你的main 或者@Test 就會被一直“掛起”,MessageListener ?也就可以正常使用了。

總結

以上是生活随笔為你收集整理的activemq 开启监听_ActiveMQ 消息监听 MessageListener 的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

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