使用带有Mule ESB的WMQ传输进行批处理排队



我的需求是读取csv并向IBM mq发送多个xml消息。

从csv创建的xml将在单个批处理或事务中发送。原因是读取这些消息的系统不是幂等的,以防发送了一些xml消息而其余的消息失败。我需要持久化失败的xml消息,以便手动重新处理。

将是伟大的,如果有人能指出我一个功能,其中多个xml消息可以作为单个批排队。

您似乎有相互冲突的需求。

批量发送消息很容易。你把它们都放在同步点下,然后发出COMMIT。只要消息数量不超过队列深度或事务UOW限制,就可以。

批量接收则完全是另一回事。IBM MQ具有消息分组和BIND_ON_OPEN参数,以确保所有附属消息都到达相同的位置,并且可以对其进行解释。

到目前为止,这一切都很简单,并且基于基本MQ API或JMS API中的选项。我看到的更大的问题是"读取这些消息的系统不是幂等的",这是一种奇特的说法,它不能检测并优雅地处理欺骗消息。这是任何异步消息传输的问题,除非使用XA。它必须优雅地处理欺骗消息,或者使用事务协调器来确保没有欺骗消息。我假设您正在使用两阶段提交,因此满足了此要求。

另一个潜在问题来自"我需要持久化失败的xml消息以进行手动重新处理"。不确定这里的"手动再处理"是什么意思。IBM MQ将持久化消息,只要在队列上PUT时将其标记为这样即可。当QMgr恢复后,消息将被传递。然而,这句话似乎暗示了高可用性或灾难恢复需求,以便复制消息。

所以简短的答案是在放置消息时选择持久性作为消息属性,并在两阶段提交下这样做。

更长的答案取决于对幂等性和恢复的引用实际上指的是什么。如果这里有需求,你需要在问题中添加细节。

相关内容

最新更新