【发布时间】:2021-10-03 11:31:27
【问题描述】:
我正在处理一个项目,该项目使用 JMS 侦听器接收传入消息,然后路由到不同的目的地,目前该过程只为每个传入消息选择以下 3 个目的地中的一个。所以xml配置写如下
<integration:router ref="jmsRouter" input-channel="jmsFilterOutput" default-output-channel="jmsRouterOutput" />
<integration:service-activator id="serviceActivator1" input-channel="input1"
ref="messageProcessService" method="callMsgProcessor1" />
<integration:service-activator id="serviceActivator2" input-channel="input2"
ref="messageProcessService" method="callMsgProcessor2" />
<integration:service-activator id="serviceActivator3" input-channel="sharedInput"
ref="messageProcessService" method="callMsgProcessor3" output-channel="reqChannel" />
以上3个serviceActivator中,最后一个的output-channel在另一个xml配置文件中定义为IBM mq。
现在我的工作是从 sharedInput 生成不同的消息,并并行发送到不同的队列
所以我添加如下一行
<integration:service-activator id="serviceActivator4" input-channel="sharedInput"
ref="messageProcessService" method="callMsgProcessorNew" output-channel="reqChannelNew" />
但是,在运行 JMS 时,来自 sharedInput 的消息只发送到 callMsgProcessor3,填充的消息也只发送到 reqChannel,而忽略我的新目的地。如果我注释掉第三个服务激活器,sharedInput 可以去 callMsgProcessorNew,并路由到新队列。
谁能建议我应该如何配置将 sharedInput 推送到两个处理器(callMsgProcessor3 和 callMsgProcessorNew),并并行发送到它们相应的输出 mq 通道?
我在网上搜索了一下,路由器拆分器或收件人列表路由器似乎可以解决我的问题?但是在阅读了相关文档后仍然感到困惑,并且不知道在我的情况下如何配置它。如果有人可以帮助提供样品,不胜感激
如果我需要提供更多信息来澄清问题,请告诉我。
【问题讨论】:
标签: spring-integration ibm-mq spring-jms