我在骡子流中使用可靠的交付。从JMS队列(基于ActiveMQ)接收消息是非常简单的情况,根据它的内容调用多个动作,如果一切正常,则将其传递到另一个JMS队列。
流同步,两个JMS队列都是事务性的(第一个BEGINS,第二个JOINS事务),使用重新传递,DLQ用于未传递的消息。字面意思:我希望所有消息都能正确处理或传送到DLQ。
对于处理编排我使用Scatter / Gather流控制,在我使用HTTP连接器调用外部HTTP服务之前,它非常正常。当我使用默认线程配置文件时,会发生一些消息丢失(如5000条消息中的3条)。他们只是消失了。即使在DLQ中也没有任何痕迹。
另一方面,当我使用自定义配置文件(不使用线程)时 - 所有邮件都会得到处理而没有任何问题。
我注意到的事实是,默认线程配置文件使用' ScatterGatherWorkManager'而自定义使用' ActiveMQ会话任务'线程。
所以我的问题是:丢失这些消息的可能原因是什么?
我使用的是Mule Server 3.6.1 CE Runtime。
答案 0 :(得分:0)
默认情况下,为没有失败的路由设置分散聚集,您可以定义自己的聚合策略来处理丢失的消息
定制聚集策略 https://docs.mulesoft.com/mule-user-guide/v/3.6/scatter-gather