为什么使用Scatter / Gather和默认线程配置文件有时会丢失消息?

时间:2015-07-24 16:25:57

标签: mule

我在骡子流中使用可靠的交付。从JMS队列(基于ActiveMQ)接收消息是非常简单的情况,根据它的内容调用多个动作,如果一切正常,则将其传递到另一个JMS队列。

流同步,两个JMS队列都是事务性的(第一个BEGINS,第二个JOINS事务),使用重新传递,DLQ用于未传递的消息。字面意思:我希望所有消息都能正确处理或传送到DLQ。

对于处理编排我使用Scatter / Gather流控制,在我使用HTTP连接器调用外部HTTP服务之前,它非常正常。当我使用默认线程配置文件时,会发生一些消息丢失(如5000条消息中的3条)。他们只是消失了。即使在DLQ中也没有任何痕迹。

另一方面,当我使用自定义配置文件(不使用线程)时 - 所有邮件都会得到处理而没有任何问题。

我注意到的事实是,默认线程配置文件使用' ScatterGatherWorkManager'而自定义使用' ActiveMQ会话任务'线程。

所以我的问题是:丢失这些消息的可能原因是什么?

我使用的是Mule Server 3.6.1 CE Runtime。

1 个答案:

答案 0 :(得分:0)

默认情况下,为没有失败的路由设置分散聚集,您可以定义自己的聚合策略来处理丢失的消息

定制聚集策略 https://docs.mulesoft.com/mule-user-guide/v/3.6/scatter-gather