为什么80%的码农都做不了架构师?>>>   

刚开始使用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修改的配置

转载于:https://my.oschina.net/csq/blog/831995

ActiveMQ Stomp的重新投递和死信相关推荐

  1. activeMQ - 消息重发策略和DLQ死信队列

    2019独角兽企业重金招聘Python工程师标准>>> 1:死信队列简介 DLQ-死信队列(Dead Letter Queue)用来保存处理失败或者过期的消息. 出现以下情况时,消息 ...

  2. ActiveMQ知识概括

    ActiveMQ知识概括 ActiveMQ简介 Java实现ActiveMQ JMS规范与落地 ActiveMQ的broker Spring,SpringBoot整合ActiveMQ ActiveMQ ...

  3. ActiveMQ(二)

    目录 八:Spring整合Activemq 生产者的实现: 消费者的实现: 设置监听器 九:Springboot整合ActiveMQ 1.queue中实现生产者和消费者 2.topic中实现生产者和消 ...

  4. ActiveMQ简介与安装

    1. ActiveMQ简介 ActiveMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的.可扩展的.稳定的和安全的企业级消息通信.ActiveMQ使用Apa ...

  5. 利用死信交换机接收死信

    在失败重试策略中,默认的RejectAndDontRequeueRecoverer会在本地重试次数耗尽后,发送reject给RabbitMQ,消息变成死信,被丢弃. 我们可以给simple.queue ...

  6. 消息中间件之rabbitMQ实战-死信队列

    该篇文章内容较多,包括有rabbitMq相关的一些简单理论介绍,集成spring Boot,provider消息推送实例,consumer消息消费实例,Direct(直连类型交换机).Fanout(广 ...

  7. RabbitMq(五) -- 死信队列和延迟队列

    1. 死信 1.1 死信的概念 先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到 queue ...

  8. 6.RokcketMQ消息重试与死信队列

    消息发送重试机制 Producer对发送失败的消息进行重新发送的机制,称为消息发送重试机制,也称为消息重投机制. 对于消息重投,需要注意以下几点: 生产者在发送消息时,若采用同步或异步发送方式,发送失 ...

  9. RabbitMQ实现死信队列

    目录 死信队列是什么 怎样实现一个死信队列 说明 实现过程 导入依赖 添加配置 编写mq配置类 添加业务队列的消费者 添加死信队列的消费者 添加消息发送者 添加消息测试类 测试 死信队列的应用场景 总 ...

  10. 服务异常通讯高级篇二(死信交换机、DelayExchange延迟队列插件)

    服务异常通讯高级篇二(死信交换机) 1.初始死信交换机 当一个队列中的消息满足下列情况之一时,可以成为死信(dead letter): 消费者使用basic.reject或 basic.nack声明消 ...

最新文章

  1. gj5 自定义序列类
  2. [Abp 源码分析]多语言(本地化)处理
  3. oracle win10配置命令,记一次Windows 平台下Oracle 10.2.0.5 EM重新配置
  4. A_Pancers团队项目设计完善编码测试
  5. 文本编辑器_markdown编辑器与富文本编辑器优缺点比较
  6. 一种使用pyinstaller时图标问题解决方案
  7. 数学建模——线性规划篇
  8. npm下载报错npm ERR code ERESOLVE
  9. ANSYSworkbench中skewness解释
  10. voc2007,voc2012数据集快速下载方法
  11. DTI脑网络构建 详细介绍处理过程以及PANDA的使用
  12. Python编程从入门到实践 第一部分基础知识 代码合集
  13. 微信小程序软键盘回车事件
  14. 如何实现 水平/垂直居中
  15. jQuery源码解析(架构与依赖模块)
  16. Scratch官方教程中文版(3)——让英文字母动起来
  17. 扁平化设计颜色之翡翠绿
  18. 高中生也能成为软件达人吗?
  19. C语言运算符优先级 复习小妙招欸嘿
  20. ThinkPHP 5.1的商城系统,商淘软件多用户商城电脑端+手机版,破解版

热门文章

  1. Journal of BitcoinJ 从clone开始
  2. eclipse安装activiti 工作流插件
  3. RotateCard(自定义旋转view)
  4. 扩展ExtJs的编辑器(HtmlEditor):插入图片
  5. docker使用官方仓库上传与下拉images
  6. EntityFramework(EF) 单表与主从表的使用
  7. 用C#,SQL Server编写的音乐播放软件
  8. SQL语句优化技术分析 整理他人的
  9. python培训拾遗
  10. IDEA SpringBoot多模块项目搭建详细过程(转)