文档章节

ActiveMQ Stomp的重新投递和死信

cisiqo
 cisiqo
发布于 2017/02/05 15:39
字数 610
阅读 782
收藏 4

刚开始使用ActiveMQ的时候没有深入研究,拿来就用。感觉简单,不会碰到什么大的问题。随着时间的推移,项目对它的依赖越来越强,使用也越来越频繁。问题也随之而来了。

最主要的就是下面这两个现象:
1、队列中只要有一个消息没有被ack掉,那么后面的消息就都卡住了。
2、经过检查,没有被ack掉的消息的数据是正常的,不清楚为什么不会被ack掉。

有上面的现象,那么就会有这样的问题:
1、没有被ack的消息,是不是可以先记录在另外一个地方,让后面的消息继续走?
2、正常的消息没有被ack掉,那么是不是可以让这个消息重新再解析一次?

带着上面的问题查找信息:
第一个问题很好解决,因为’activemq.prefetchSize’的默认值是1,把这个值改大一些就不会卡住。但是错误的消息没有被ack掉的需要自己手动写记录。
第二个问题却感觉有点难,困扰我好久。

查找ActiveMQ的资料,官网给出了死信的配置(DLQ),但是自己配置了却没有任何效果。
后来查看到Apollo的资料,介绍其是在ActiveMQ基础上发展而来的。
然后就折腾Apollo,用原来的stomp-php库,问题依然存在。后来又查找其它支持Apollo的stomp库,查看源码的时候发现,连接服务器的时候多了一个accept-version的header属性。然后继续查,发现stomp有1.0、1.1、1.2多个版本,我用的stomp-php库没有版本的选项,那么默认就是1.0版本,1.0版本是没有nack的操作命令的。

既然找到线索了,那么就继续。先仿照ack的方法,添加一个nack的方法,然后连接服务器的时候添加accept-version的header属性。测试一下,终于成功了。

资料:
1、修改了别人的stomp-php库,添加了accept-version为1.2的header属性,连接
2、我的activemq.xml修改的配置

本文转载自:http://bomod.cn/?p=6

cisiqo
粉丝 33
博文 29
码字总数 6063
作品 0
武汉
程序员
私信 提问
加载中

评论(5)

Nathans
Nathans

引用来自“nidongwo-”的评论

引用来自“Nathans”的评论

引用来自“nidongwo-”的评论

引用来自“Nathans”的评论

请问如何ack消息,配置了不能正常工作,还是自动确认
手动确认

就是没办法手动确认
subscribe一个队列的时候,需要在header中添加 array('ack' => 'client') 例如:$headers = array('ack' => 'client');

如果是java的话,在连接的时候,需要在createsession的时候添加ack参数

确实添加了
cisiqo
cisiqo

引用来自“Nathans”的评论

引用来自“nidongwo-”的评论

引用来自“Nathans”的评论

请问如何ack消息,配置了不能正常工作,还是自动确认
手动确认

就是没办法手动确认
subscribe一个队列的时候,需要在header中添加 array('ack' => 'client') 例如:$headers = array('ack' => 'client');

如果是java的话,在连接的时候,需要在createsession的时候添加ack参数
Nathans
Nathans

引用来自“nidongwo-”的评论

引用来自“Nathans”的评论

请问如何ack消息,配置了不能正常工作,还是自动确认
手动确认

就是没办法手动确认
cisiqo
cisiqo

引用来自“Nathans”的评论

请问如何ack消息,配置了不能正常工作,还是自动确认
手动确认
Nathans
Nathans
请问如何ack消息,配置了不能正常工作,还是自动确认
[中间件] 消息处理利器 ActiveMQ 的介绍 & Stomp 协议的使用

随着互联网企业业务量的不断扩大,企业信息网络系统的愈加复杂,性能问题也就越来越凸显出来,串行的业务处理方式显然已经成为主要的瓶颈,我们需要更多异步的并行处理来提高企业信息系统的业...

长平狐
2012/11/19
1K
0
求教PHP怎么和ActiveMQ通信

求教PHP怎么和ActiveMQ(LInux)通信? 现在业务量比较大,需要处理的东西比较多,架设了一套消息系统ActiveMQ 我想通过stomp协议进行通信,我在google上找到 stomp-php 可用,但就是连不上M...

纯24K爷们儿
2013/12/24
1K
2
activemq Unknown data type: 69

使用python的stomp客户端连接到activemq 5.8.0时,activemq中报错: INFO | Transport failed: java.io.IOException: Unknown data type: 69java.io.IOException: Unknown data type: 69 原因......

黑色透明
2013/03/31
0
0
Apache Apollo 1.0,新一代ActiveMQ消息系统

Apache ActiveMQ项目团队近日发布了Apollo 1.0正式版。 先来介绍一下Apache ActiveMQ,这是一个非常流行、强大、开源的消息和集成模式(Integration Patterns)服务器,速度快、支持多种跨语...

红薯
2012/02/06
5.6K
7
activeMQ支持的四种协议简介及性能比较

activeMQ5.11.1版本带的例子提供了四种协议的简单demo,这四种协议分别为:AMQP,MQTT,OpenWire,Stomp,通过运行这四种协议的的demo可以大致得出这四种协议实现在activeMQ中的性能对比: amqp...

z_jordon
2015/05/27
0
2

没有更多内容

加载失败,请刷新页面

加载更多

数组算法

/*数组的相关的算法操作:1、在数组中找最大值/最小值*/class Test11_FindMax{public static void main(String[] args){int[] array = {4,2,6,8,1};//在数组中找最大...

architect刘源源
28分钟前
1
0
okhttp3 以上版本在安卓9.0无法请求数据的解决方案

应用官方的说明:在 Android 6.0 中,我们取消了对 Apache HTTP 客户端的支持。 从 Android 9 开始,默认情况下该内容库已从 bootclasspath 中移除且不可用于应用。且Android P 限制了明文流量...

chenhongjiang
今天
5
0
简单示例:NodeJs连接mysql数据库

开篇引用网上的说法: 简单的说 Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。Node.js是一个事件驱动I/O服务端JavaScript环境,基于...

李朝强
今天
8
0
大数据学习路线

年薪30W大数据学习路线图: 一、Hadoop入门,了解什么是Hadoop 1、Hadoop产生背景 2、Hadoop在大数据、云计算中的位置和关系 3、国内外Hadoop应用案例介绍 4、国内Hadoop的就业情况分析及课程...

陈小君
今天
3
0
解读 Kylin 3.0.0 | 更敏捷、更高效的 OLAP 引擎

在近期的 Apache Kylin Meetup 成都站上,我们邀请到 Kyligence 架构师 & Apache Kylin Committer 倪春恩对 Kylin 3.0.0 版本的一些重要功能及改进从使用到原理进行了介绍: Apache Kylin 在...

ApacheKylin
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部