【问题标题】:ActiveMQ redelivey with Spring Integration Aggregator not working使用 Spring Integration Aggregator 的 ActiveMQ 重新交付不起作用
【发布时间】:2017-01-01 16:19:48
【问题描述】:

我正在收听来自 activeMq 嵌入式代理队列的消息(比如原始消息)。此消息首先移动到通道,然后传递到路由器,并根据条件将其传递给聚合器。聚合器等待再发送一条消息,然后将部分或聚合消息传递给服务激活器类。

基于某些逻辑激活器类决定抛出异常,我们希望再次重新传递消息,因为我们已经配置了 ActiveMQ 代理端重新传递插件。

如果达到最大重试次数,则没有聚合器的消息将被正确地重新传递并移动到 DLQ,但如果聚合器出现,则它不会被重新传递。 我不确定,但我认为聚合消息与原始消息不同,这就是代理无法将该消息再次移动到队列的原因,因为消息聚合不是原始消息。

有没有办法处理这种情况并启用重新传递或任何其他方式将两个原始消息传递给聚合器,以便将它们再次移动到队列中一次又一次地监听,直到被代理移动到 DQL?

【问题讨论】:

    标签: activemq spring-integration


    【解决方案1】:

    您的问题不清楚 - 如果消息到达聚合器,则将其存储用于聚合目的;从 JMS 交付的角度来看,它是成功的。

    您不能追溯“拒绝”从代理的角度已经接受的 JMS 消息。

    如果我理解您的要求,您将需要一个并发 > 1 的侦听器容器(以便可以处理第二条消息)以及由服务激活器(不是聚合器)调用的您自己的代码,以保持第一个线程直到第二个到了;如果您的情况发生,则拒绝这两条消息。

    【讨论】:

      猜你喜欢
      • 2014-11-05
      • 2014-12-15
      • 1970-01-01
      • 2014-09-24
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      • 2013-03-07
      • 2016-04-04
      相关资源
      最近更新 更多