我的要求是读取csv并向IBM mq发送多个xml消息。
从csv创建的xmls将在单个批处理或事务中发送。 系统读取这些消息的原因不是幂等的,并且如果发送了一些xml消息,则剩余的失败。我需要保留失败的xml消息以进行手动重新处理。
如果有人可以指出一个功能,可以将多个xml消息作为一个批处理添加,那就太棒了。
答案 0 :(得分:1)
您似乎有相互矛盾的要求。
批量发送邮件很容易。您将它们全部置于同步点下,然后发出COMMIT
。只要没有比队列深度或交易UOW限制更多的消息,你就没事了。
批量接收它们完全是另一回事。 IBM MQ具有消息分组和BIND_ON_OPEN
参数,以确保所有附属消息都发送到同一位置并且可以进行说明。
到目前为止,这一切都很简单,并且基于基本MQ API或JMS API中的选项。我看到的更大问题是声明"读取这些消息的系统不是幂等的"这是一种奇特的说法,它不会检测并优雅地处理重复消息。除非使用XA,否则任何异步消息传输都会出现问题。它必须优雅地处理欺骗消息或使用事务协调器以确保没有欺骗消息。我暂时假设您正在使用两阶段提交,因此满足了此要求。
另一个潜在问题来自"我需要将失败的xml消息保留为手动重新处理。"不确定"手动重新处理"在这里意味着IBM MQ将保留消息,只需在队列中PUT
时将其标记为。恢复QMgr后,将传递消息。但是,此声明似乎暗示了高可用性或灾难恢复要求,以便复制消息。
所以简短的回答是在放置消息时选择持久性作为消息属性,并在两阶段提交时选择。
答案越长,取决于对幂等和恢复的引用实际上提到的内容。如果这里有要求,您需要在问题中添加详细信息。