欢迎访问 生活随笔!

生活随笔

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

生活经验

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

发布时间:2023/11/27 生活经验 52 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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 的使用的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。