【问题标题】:Batch Enqueue using WMQ Transport with Mule ESB使用 WMQ 传输和 Mule ESB 进行批量入队
【发布时间】:2015-08-15 06:39:36
【问题描述】:

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

从 csv 创建的 xml 将在单个批次或事务中发送。 原因是系统读取这些消息不是幂等的,以防某些 xml 消息被发送,而其余消息则失败。我需要保留失败的 xml 消息以进行手动重新处理。

如果有人能指出一个可以将多条 xml 消息作为一个批次排队的功能,那就太好了。

【问题讨论】:

    标签: xml jms mule ibm-mq esb


    【解决方案1】:

    您似乎有相互矛盾的要求。

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

    批量接收它们完全是另一回事。 IBM MQ 具有消息分组和BIND_ON_OPEN 参数,以确保所有附属消息都发送到同一个位置并且可以被计算在内。

    到目前为止,这一切都很简单,并且基于基本 MQ API 或 JMS API 中的选项。我看到的更大的问题是“读取这些消息的系统不是幂等的”声明,这是一种奇特的说法,它没有检测和优雅地处理欺骗消息。除非使用 XA,否则任何异步消息传输都会出现这种问题。它必须要么优雅地处理重复消息,要么使用事务协调器来确保没有重复消息。我暂时假设您使用的是两阶段提交,所以这个要求得到了满足。

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

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

    更长的答案取决于对幂等性和恢复的引用实际上暗示了什么。如果这里有要求,您需要在问题中添加详细信息。

    【讨论】:

    • 感谢您的回复,这确实让我从 IBM MQ 上下文中获得了一些见解。但是,我正在寻找使用 Mules ESB 组件的解决方案。最后最终结合使用 VM-Queue 和 WMQ 来实现事务性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多