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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

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

發(fā)布時(shí)間:2023/11/27 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 activemq 开启监听_ActiveMQ 消息监听 MessageListener 的使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

剛學(xué) ActiveMQ, 最開(kāi)始搭建環(huán)境的時(shí)候引入的jar 包,幾個(gè)核心的jar jms.jar,?httpcore.jar ,?httpclient.jar,?activemq-all.jar 準(zhǔn)備完畢,啟動(dòng)junit 發(fā)現(xiàn)有好些個(gè)class 找不到,比如 PoolingClientConnectionManager 等,老是報(bào) classnotfound 的錯(cuò)誤,打開(kāi)源代碼一看,原來(lái)是引入的版本過(guò)低,將其版本升級(jí)到 4.2.1 就解決問(wèn)題了。

ActiveMQ 最關(guān)心的就是消息的發(fā)送與接收了,消息發(fā)送不是問(wèn)題,主要是消息接收,或者說(shuō)是讓消息不停地接收。

接收消息有兩種方式,

方式一:

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...");

這樣就可以不間斷地接收消息,當(dāng)向客戶(hù)端發(fā)送一個(gè) “stop” 的時(shí)候,客戶(hù)端進(jìn)程將會(huì)結(jié)束。

方法二:

使用?MessageListener,開(kāi)始學(xué)習(xí)MessageListener 的時(shí)候,無(wú)非就是在網(wǎng)上找些例子抄抄,實(shí)現(xiàn)代碼如下:

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();

}

}

});

這是網(wǎng)上出現(xiàn)最多的helloworld 級(jí)別的?MessageListener ?使用方式,但我把代碼抄完了之后一運(yùn)行,發(fā)現(xiàn)什么都沒(méi)有發(fā)生,在ActiveMQ 控制臺(tái)上也沒(méi)有看到消息被接收了。

原來(lái),網(wǎng)上抄了這段代碼并不是一段完整的代碼,

首先理解下“監(jiān)聽(tīng)”, 上面的這段程序雖然注冊(cè)了監(jiān)聽(tīng),但監(jiān)聽(tīng)也有一個(gè)生命周期,在main方法里面或者 @Test 里面調(diào)用了之后,程序會(huì)立馬接收,監(jiān)聽(tīng)的生命周期也將結(jié)束,不會(huì)再起作用。

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

boolean flag = true;

while(flag){

Thread.sleep(1000 * 100);

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

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。