activemq 无法消费! consumers are alive when the messages are stuck !
我的微服务中, activemq 消费 一条消息的时候, 出了错, 结果导致了 那条消息就一直处于pending 状态,
queue.user.545c2ed5-fee7-482a-bb59-564bbaa593f8_c5cdc461-4e9c-48c5-8684-6a81571114b8 1 1 0 0 点击去是这样的: Browse queue.user.545c2ed5-...
Message ID Correlation ID Persistence Priority Redelivered Reply To Timestamp Type Operations
ID:dce4f74976e7-34120-1531388605944-1:4:1:1:1 Persistent 4 true 2018-07-12 09:43:31:554 UTC Delete
可以看到 pending 是1 , dequeue 是0 , 而消费者是1, 明明存在1个消费者, 但是却一直不消费, 不dequeue 是什么意思?? 本想直接在那个管理界面上点击 delete 操作的, 但是想想, 哥也好歹是程序员, . 我决定写个程序来消费他..
/**
*
* 队列操作
*/
public static void consume() throws JMSException {
Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
String qu = null;
qu = "queue.user.545c2ed5-fee7-482a-bb59-564bbaa593f8_c5cdc461-4e9c-48c5-8684-6a81571114b8";
Queue queue = session.createQueue(qu);
MessageConsumer consumer = session.createConsumer(queue);
System.out.println("consumer = " + consumer);
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
System.out.println("message00 ============ " + message);
try {
message.acknowledge();
} catch (JMSException e) {
e.printStackTrace();
}
}
});
}
程序运行没错, 但是, 我的 MessageListener 似乎不起作用, message00 ============ 始终不打印出来. 我也是郁闷了, 这么简单的程序都有错啊, 我写过很多次的好吧, 网上疯狂搜索一把, 好像大家都是这样写的啊.. 坑爹了啊..
不同于topic, queue 是可以先生产, 后面再消费的吧,,queue 并没有生产者消费者时间先后顺序的限制, 难道哪里记错了? 各种找资料, 发现并不是这样的..
难不成activemq 已经报错了? 看下日志吧:
2018-04-13 05:11:03,574 CRIT Supervisor running as root (no user in config file)
2018-04-13 05:11:03,581 WARN Included extra file "/etc/supervisor/conf.d/activemq.conf" during parsing
2018-04-13 05:11:03,581 WARN Included extra file "/etc/supervisor/conf.d/cron.conf" during parsing
2018-04-13 05:11:03,744 INFO RPC interface 'supervisor' initialized
2018-04-13 05:11:03,744 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2018-04-13 05:11:03,749 INFO supervisord started with pid 1
2018-04-13 05:11:04,751 INFO spawned: 'cron' with pid 16
2018-04-13 05:11:04,753 INFO spawned: 'activemq' with pid 17
2018-04-13 05:11:06,102 INFO success: cron entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-04-13 05:11:06,102 INFO success: activemq entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-04-13 07:09:36,530 WARN received SIGTERM indicating exit request
2018-04-13 07:09:36,530 INFO waiting for cron, activemq to die
2018-04-13 07:09:37,533 INFO stopped: activemq (terminated by SIGTERM)
2018-04-13 07:09:37,534 INFO stopped: cron (terminated by SIGTERM)
2018-04-13 07:11:36,201 CRIT Supervisor running as root (no user in config file)
2018-04-13 07:11:36,201 WARN Included extra file "/etc/supervisor/conf.d/activemq.conf" during parsing
2018-04-13 07:11:36,201 WARN Included extra file "/etc/supervisor/conf.d/cron.conf" during parsing
2018-04-13 07:11:36,258 INFO RPC interface 'supervisor' initialized
2018-04-13 07:11:36,260 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2018-04-13 07:11:36,260 INFO supervisord started with pid 1
2018-04-13 07:11:37,263 INFO spawned: 'cron' with pid 16
2018-04-13 07:11:37,265 INFO spawned: 'activemq' with pid 17
2018-04-13 07:11:38,737 INFO success: cron entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-04-13 07:11:38,738 INFO success: activemq entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-05-03 03:42:11,945 WARN received SIGTERM indicating exit request
2018-05-03 03:42:11,959 INFO waiting for cron, activemq to die
2018-05-03 03:42:12,971 INFO stopped: activemq (terminated by SIGTERM)
2018-05-03 03:42:12,973 INFO stopped: cron (terminated by SIGTERM)
2018-05-03 03:44:23,724 CRIT Supervisor running as root (no user in config file)
2018-05-03 03:44:23,727 WARN Included extra file "/etc/supervisor/conf.d/activemq.conf" during parsing
2018-05-03 03:44:23,728 WARN Included extra file "/etc/supervisor/conf.d/cron.conf" during parsing
2018-05-03 03:44:23,824 INFO RPC interface 'supervisor' initialized
2018-05-03 03:44:23,824 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2018-05-03 03:44:23,824 INFO supervisord started with pid 1
2018-05-03 03:44:24,830 INFO spawned: 'cron' with pid 16
2018-05-03 03:44:24,831 INFO spawned: 'activemq' with pid 17
2018-05-03 03:44:26,254 INFO success: cron entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-05-03 03:44:26,254 INFO success: activemq entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-07-16 09:35:45,450 CRIT Supervisor running as root (no user in config file)
2018-07-16 09:35:45,458 WARN Included extra file "/etc/supervisor/conf.d/activemq.conf" during parsing
2018-07-16 09:35:45,458 WARN Included extra file "/etc/supervisor/conf.d/cron.conf" during parsing
2018-07-16 09:35:45,472 INFO RPC interface 'supervisor' initialized
2018-07-16 09:35:45,472 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2018-07-16 09:35:45,472 INFO supervisord started with pid 1
2018-07-16 09:35:46,474 INFO spawned: 'cron' with pid 16
2018-07-16 09:35:46,475 INFO spawned: 'activemq' with pid 17
2018-07-16 09:35:47,773 INFO success: cron entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-07-16 09:35:47,773 INFO success: activemq entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
似乎也并没有上面特别的, CRIT 是什么? 好像很严重的样子, 感觉还是可以忽略的吧..
http://activemq.2283324.n4.nabble.com/Messages-stuck-in-pending-state-in-queue-td4669239.html 好像是版本问题唉, 难道?
http://activemq.2283324.n4.nabble.com/Messages-are-kept-in-Pending-queue-for-durable-topic-subscribers-td4690015.html 看的晕晕的
https://stackoverflow.com/questions/7786086/difference-between-pending-messages-and-enqueue-counter-in-active-mq : 提到
pending messages = number of messages CURRENTLY waiting for delivery in the destination (the current size of the queue) enqueued messages = number of messages that where enqueued in the destination since the last statistic reset. This number can only rise. dequeued messages = messages delivered from the destination to consumers. this number can be higher that the number of enqueued messages if a message was delivered to multiple consumers (topics).
好像并没什么卵用..
天啊, 明明两个消费者, 但是却一直不消费, 不dequeue 是几个意思?
仔细一看, 此时的消费者是2, 那就是说, 还有其他消费者?
queue.user.545c2ed5-fee7-482a-bb59-564bbaa593f8_c5cdc461-4e9c-48c5-8684-6a81571114b8 1 2 0 0
突然意识到是我的微服务还在运行, 难道它阻塞了其他消费者对当前queue的消费? 赶紧把 微服务 关闭, 再次运行上面程序, 搞定了!
activemq 无法消费! consumers are alive when the messages are stuck !的更多相关文章
- springboot整合activemq(二),消费均匀分析
问题分析:当如果多个消费者是什么情况呢 topic消费是友多个消费者的,是支持的,但是queue是支持,但是不能保证多个消费均匀消费,在分布式环境下怎么操作呢: 看案例: 在前面整合代码执行: 浏览器 ...
- ActiveMQ 集群(1)
Queue consumer clusters(消费者集群): 简介: 同一个queue,如果一个消费者失效, 那么任何未经确认的消息将会被发送给queue上的其它消费者.如果一个消费者比其它消费者执 ...
- ActiveMQ静态网络链接(broker-to-broker)
ActiveMQ的网络连接分为静态连接和动态连接.本章研究静态连接. 1.ActiveMQ的networkConnector是什么 在某些情况下,需要多个ActiveMQ的Broker做集群,那么就涉 ...
- 使用 ActiveMQ 实现JMS 异步调用
目录 简介 启动 ActiveMQ 服务器 查看控制台 ActiveMQ 的消息通道 Queue Topic 比较 开发生产者和消费者 开发服务端(消费者) 开发客户端(生产者) 参考 简介 服务之间 ...
- 1.springboot+ActiveMQ
1.项目结构如下 pom.xml文件如下 <dependencies> <dependency> <groupId>junit</groupId> &l ...
- 消息队列之activeMQ
1.activeMQ的主要功能 实现高可用.高伸缩.高性能.易用和安全的企业级面向消息服务的系统 异步消息的消费和处理 控制消息的消费顺序 可以和Spring/springBoot整合简化编码 配置集 ...
- ActiveMQ(5.10.0) - Message Redelivery and DLQ Handling
When messages expire on the ActiveMQ broker (they exceed their time-to-live, if set) or can’t be red ...
- 学习笔记-记ActiveMQ学习摘录与心得(二)
上个周末被我玩过去了,罪过罪过,现在又是一个工作日过去啦,居然有些烦躁,估计这几天看的东西有点杂,晚上坐下来把自己首要工作任务总结总结.上篇学习博客讲了ActiveMQ的特性及安装部署,下面先把我以前 ...
- ActiveMQ的Destination高级特性
1. Composite Destinations 组合目的地 组合队列Composite Destinations : 允许用一个虚拟的destination代表多个destinations ...
随机推荐
- python继承和多态
继承 目标 单继承 多继承 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 继承 实现代码的重用,相同的代码不需要重复的编写 多态 不同的对象调用相同的方法,产生不 ...
- 关于C++使用将整形转换为字符串进行格式化的问题
最近使用CTime类获取时间,因为在时间的格式上要求做到统一,所以会对时间信息进行格式化 目的:将时间信息生成为年4位,月2位,日2位,时2位,分2位,秒2位 也就是:2017-02-18 10:42 ...
- Spring Boot笔记之自定义启动banner
控制banner内容 Spring Boot启动的时候默认的banner是spring的字样,看多了觉得挺单调的,Spring Boot为我们提供了自定义banner的功能. 自定义banner只需要 ...
- 著名的Log4j是怎么来的?
Java在设计之初,借鉴了很多其他语言不错的特性和优点,唯独没有设计日志系统,但是日志的重要性不言而喻,一旦程序运行起来,运行结果与预期不一致,基本就是出Bug了,这个时候需要进行Bug排查,一般有两 ...
- Day 2: ASP.NET and python trying
ASP.NET and Python/Javascript Many jQuery plugins that are designed and shared for free on the inter ...
- 微信小程序富文本中的图片大小超出屏幕
这个问题我在小程序社区中提的,后来有个帮我回答了这个问题,我试了一下可以. 解决办法是过滤富文本内容,给图片标签添加一个样式,限制图片的最大宽度. replace(/\<img/gi, '& ...
- Python pip源更改
将pip源设置为阿里源 windows 打开文件资源管理器(文件夹地址中) 地址栏上面输入 %appdata% 在这里面新建一个文件夹pip 在pip文件夹里面新建一个文件叫做 pip.ini,内容如 ...
- eclipse中,将springboot项目打成jar包
1.右击项目,选择Run As - Maven clean 2.右击项目,选择Run As - Maven install 3.成功后 会在项目的target文件夹下生成jar包 4.将打包好的jar ...
- 【mysql】Mgr实现数据库高可用架构
转载:https://www.cnblogs.com/luoahong/articles/8043035.html MGR简介 MySQL Group Replication(下简称:MGR)是MyS ...
- tomcat访问错误调试方法
生产环境中经常用到tomcat,所以还是要学一下tomcat的排错的 很重要的一点,就是实时查看catalina.out日志 执行tail -f catalina.out就会实时刷新日志了 catal ...