我有一个jms-inbound-gateway,它从WebsphereMQ代理读取请求并通过我的集成系统传递它们,该集成系统返回一个消息序列作为回复。
通过在集合上应用拆分器来获取消息序列。它会生成63条消息,如日志中所示。
问题是WebsphereMQ代理只接收最后一条消息。我不知道其他62条消息在哪里。
是因为jms-inbound-gateway无法回复消息序列吗?
答案 0 :(得分:1)
正确;网关用于简单的请求/回复方案。
但是,我希望第一个而不是最后一条消息是回复。
要为单个回复返回多条消息,您可以将它们合并为一条消息,也可以使用message-driven-channel-adapter
作为入站,outbound-channel-adapter
作为“回复”序列。
修改强>:
当网关收到对请求的多个响应时,返回的响应取决于流的拓扑。使用完全同步的流(整个DirectChannel
),将返回最后一条消息。使用异步流程(流程中为QueueChannel
或ExecutorChannel
),它很可能是第一个,但存在竞争条件。
底线是网关只需要一个回复并向单个请求发送多个回复不会产生预期的行为。