Mule 忽略jms队列中的重复消息

Mule 忽略jms队列中的重复消息,mule,Mule,我有mule flow,我使用JMS轮询每5分钟轮询一次队列,并处理队列中的所有消息。每当实体有更新时,我都会在队列中接收消息。每当我看到消息时,我都会从消息中提取唯一id,并使用该id通过web服务调用检索更新的实体。实体可以多次更新,因此我需要捕获所有更新。例如,如果队列中有10条消息引用同一实体更新,那么我需要忽略9条消息,只使用一条,因为所有消息都引用同一实体。我试着用幂等的消息过滤器。但它第一次运行良好。当应用程序在5分钟轮询频率后第二次从队列中读取消息,并且同一实体存在message

我有mule flow,我使用JMS轮询每5分钟轮询一次队列,并处理队列中的所有消息。每当实体有更新时,我都会在队列中接收消息。每当我看到消息时,我都会从消息中提取唯一id,并使用该id通过web服务调用检索更新的实体。实体可以多次更新,因此我需要捕获所有更新。例如,如果队列中有10条消息引用同一实体更新,那么我需要忽略9条消息,只使用一条,因为所有消息都引用同一实体。我试着用幂等的消息过滤器。但它第一次运行良好。当应用程序在5分钟轮询频率后第二次从队列中读取消息,并且同一实体存在messagesupdates时,幂等元消息筛选器将忽略这些消息。理想情况下,应用程序将来也应该在不同的轮询间隔(如果有)期间使用相同的消息。只有在一个时间间隔内发现重复消息时,它才应忽略这些消息。但如果在未来的间隔期间发现,则应重复相同的处理忽略重复项,并仅处理在第一个间隔期间执行的一个

我希望我能够解释我的问题

任何帮助都将不胜感激

谢谢, Vijay

尝试为筛选器对象存储设置entryTTL,如:

<idempotent-message-filter idExpression="#[yourExpression]">
  <in-memory-store entryTTL="300000"/>
</idempotent-message-filter>
这样,用于筛选邮件的条目将在五分钟后过期

HTH

尝试为筛选器对象存储设置entryTTL,如:

<idempotent-message-filter idExpression="#[yourExpression]">
  <in-memory-store entryTTL="300000"/>
</idempotent-message-filter>
这样,用于筛选邮件的条目将在五分钟后过期

HTH

您想要使用幂等式消息筛选器,但需要使用自定义的幂等式表达式对其进行配置:

此表达式的文档说明:

定义从中提取ID时要使用的一个或多个表达式 信息。例如,可以合并到标题 作为提供幂等性的消息的ID: “[标题:foo,bar]”。或者,您可以将消息ID与 标题:'[message:id]-[header:foo]'。如果未设置此属性, 默认情况下将使用“[message:id]”

然后,构思一个表达式,该表达式具有一个组件,该组件对于一次轮询相同,可能是系统时间的模,对于在一次轮询中被视为相同的消息相同。

幂等消息筛选器是您想要使用的,但您需要使用自定义的幂等表达式对其进行配置:

此表达式的文档说明:

定义从中提取ID时要使用的一个或多个表达式 信息。例如,可以合并到标题 作为提供幂等性的消息的ID: “[标题:foo,bar]”。或者,您可以将消息ID与 标题:'[message:id]-[header:foo]'。如果未设置此属性, 默认情况下将使用“[message:id]”


然后,构思一个表达式,该表达式的一个组件对于一次轮询来说是相同的,可能是系统时间的模,对于一次轮询中被认为相同的消息来说是相同的。

谢谢David/Daniel。我使用它如下:

幂等元消息筛选器idExpression=XPATH表达式以检索实体id> 内存存储入口TTL=60000/> /幂等元消息过滤器>

这对我来说很好

谢谢你们的帮助


维杰

谢谢大卫/丹尼尔。我使用它如下:

幂等元消息筛选器idExpression=XPATH表达式以检索实体id> 内存存储入口TTL=60000/> /幂等元消息过滤器>

这对我来说很好

谢谢你们的帮助


维杰

谢谢丹尼尔。它解决了我的问题。感谢您在这方面的帮助。因为它解决了您的问题,请将答案标记为已接受。谢谢你,丹尼尔。它解决了我的问题。感谢您在这方面的帮助。因为它解决了您的问题,请将答案标记为已接受。维杰,看来你是新来的。如果某个答案对您有帮助,请单击答案旁边的复选框,将其标记为已接受。这会激励人们去帮助。维杰,看起来你是新来的。如果某个答案对您有帮助,请单击答案旁边的复选框,将其标记为已接受。提示:永远不要丢弃代码;永远要考虑至少添加一点解释。提示:永远不要只删除代码;至少要考虑增加一点解释。
<idempotent-message-filter idExpression="#[message:payload]" doc:name="Idempotent Message" throwOnUnaccepted="true" onUnaccepted="ValidationFailFlow">
<in-memory-store name="myInMemoryObjectStore" entryTTL="120" expirationInterval="3600" maxEntries="60000" ></inmemory-store>
</idempotent-message-filter>