【发布时间】:2020-06-02 21:05:03
【问题描述】:
我正在尝试使用 apache camel 从 activemq 队列“AMQ:ORIGIN”中读取消息。读取消息后需要将其传递给两个不同的“AMQ 队列”。但条件如下。
- 消息应立即传递到队列“AMQ:A”。
- 消息应在延迟一分钟后传递到队列“AMQ:B”。
为了实现上述目标,我创建了两条路线。在第一条路线中,我从 AMQ 队列中读取数据,并对“AMQ:A”和“seda:delay”队列进行多播。在第二条路线中,我正在读取“seda:delay”队列,延迟一分钟,然后传递到“AMQ:B”队列。
如果将 1 或 10 条消息传递给“AMQ:ORIGIN”,则工作正常
如果我同时向“AMQ:ORIGIN”队列发送 100 条消息,那么
- 所有 100 条消息都传递到“AMQ:A”队列
- 只有 10 或 12 条消息被传递到“AMQ:B”队列。休息只停留在路线上。
以下是我的路线。
<route id="read-origin">
<from uri="activemq:ORIGIN"/>
<multicast stopOnException="true">
<to uri="activemq:A"/>
<to uri="seda:delay-route"/>
</multicast>
</route>
<route id="delay-route">
<from uri="seda:delay-route"/>
<delay asyncDelayed="true">
<constant>60000</constant>
</delay>
<to uri="activemq:B"/>
</route>
请提出上述更改。
谢谢,
【问题讨论】:
标签: apache-camel