当前位置: 首页 > 知识库问答 >
问题:

消息重试并在Spring JMS和ActiveMQ中向DLQ添加有毒消息

宗政金鹏
2023-03-14

我需要从两个队列加载消息,并且我使用ActiveMQ,我必须实现重试机制,以防出现任何错误或网络或应用程序服务器故障并加载回同一个队列。此外,我想将任何有害消息加载到DLQ。

请让我知道我是否可以通过Spring JMS实现这些。此外,请提供一些很好的例子来完成这项任务。我检查了Spring JMS留档,没有太多细节。

共有1个答案

益炜
2023-03-14

这是ActiveMQ的代理函数-只需使用适当的策略配置代理即可。

如果使用DefaultMessageListenerContainer,则必须使用事务会话;然后,如果侦听器抛出异常,消息将回滚到队列中,代理的重试/DLQ策略将启动。

请参阅有关启用事务的Spring留档。

 类似资料:
  • 我有类似这样的结构 SQS->lambda->DLQ 但是,当lambda在向SQS添加新消息时被触发,然后失败时,消息不会存储在DLQ中。 我发现当新消息发布到SQS时触发的事件本质上是同步的。 SQS事件触发器异步调用lambda 或

  • 我在配置了DLQ的SQS队列上有一个lambda触发器。 当我的lambda失败时,来自队列的原始消息将被重定向到DLQ。现在我想添加更多的信息到这个原始的消息(如为什么有一个错误等)。我知道我不能修改原始消息,但我看到消息可以有额外的消息属性。 如何从lambda函数(NodeJS)使用/设置它们?

  • 我第一次试着让它工作,所以请容忍我。我正在尝试学习Kafka的检查点设置和处理“错误”消息,在不丢失状态的情况下重新启动。 用例:使用检查点。从Kafka那里读取一个整数流,保持一个连续的和。如果读到“坏”Kafka消息,请重新启动应用程序,跳过“坏”消息,保持状态。我的流看起来像这样: set1,5 set1,7 set1,foobar set1,6 我希望我的应用程序保留它看到的整数的运行总和

  • 主要内容:1 并发消费重试,1.1 失败重试,1.2 超时重试,2 顺序消费重试,2.1 失败重试,2.2 超时重试,3 broker处理回退请求,3.1 asyncConsumerSendMsgBack处理回退请求,3.2 handleRetryAndDLQ处理重试和死信消息基于RocketMQ release-4.9.3,深入的介绍了DefaultMQPushConsumer消费者重试消息和死信消息源码。 消费重试:并发消费和顺序消费对于消费失败的消息均会有消息重试机制。 1 并发消费重试

  • ActiveMQ中的持久主题(这似乎是JMS本身的一个障碍)似乎是一个订阅服务器上只能有一个使用者活动。 也就是说,在ActiveMQ文档中: 使用唯一的JMS clientID和持久订阅服务器名称创建JMS持久订阅服务器MessageConsumer。为了符合JMS,对于一个JMS clientID,在任何时间点只能有一个JMS连接处于活动状态,对于一个clientID和订阅者名称,只能有一个使

  • 我有一个SQS队列,由lambda访问。我正在利用SQS提供的重试功能,使用重新驱动策略,并在最大重试时将消息转发到死信队列。我想在每次重试时向消息追加额外的数据,但希望SQS继续管理重试。这有可能吗?