java - 向 Camel 路由添加延迟会导致 Atomikos 超时

标签 java apache-camel activemq atomikos

我有一个监听 ActiveMQ 的 Camel 路由。我添加了 10 秒的延迟,因为在开始之前需要确定另一个进程已完成。这是通过添加延迟器属性来实现的:-

<camel:route id="packageRetrievalContentAndSendToS3" delayer="10000">
    <camel:from uri="activemq:{{ccs.activemq.queue.prefix}}.sr.package.and.send"/>

    ....extra steps....

</camel:route>

这工作正常,但问题是,我的路线现在超时了!下面留言。

Atomikos:8] c.a.icatch.imp.ActiveStateHandler        : Timeout/setRollbackOnly of ACTIVE coordinator !

我非常感谢任何关于如何解决这个问题的建议。理想情况下,我想增加该路线的超时。非常感谢

最佳答案

正如@sergei-petunin 已经评论的那样,您尝试通过等待来补偿设计问题

您的路线在您等待的事情完成之前不应收到消息。这意味着

  1. 您等待的事物会收到消息并执行其必须执行的操作
  2. 然后它会向您的路线发送一条消息
  3. 然后您的路由无需等待即可处理消息

因此,该过程的所有部分步骤都是异步且顺序完成的,因为它们相互依赖。这也称为 Pipes and Filters EIP .

如果您可以控制等待的事物,则可以通过在等待的事物和路线之间放置消息队列来轻松更改设计。

关于java - 向 Camel 路由添加延迟会导致 Atomikos 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59681259/

相关文章:

java - ActiveMQ JMS 消息选择

java - Android - 等待 Volley 响应返回

java - 一个包中有两个 module-info.java

java - ActiveMQ 消费者挂起

java - 使用 Apache Camel 路由订阅/使用 Java 中的 HornetQ 主题

java - 从队列接收消息数量

java - 在代理的activemq网络中禁用jmx(spring,xbean)

java - Java 可以在不改变 Activity 窗口的情况下显示对话框吗?

java - 毕加索图片在 android 中加载缓慢,为什么?

java - Camel - 在处理器内保留数据库连接