我的问题可能是重复的......但是我无法找到答案 .
我们的团队正在评估Spring Integration以取代Message Broker流程 . 同时我正在编写集成以消费两种不同的Web服务,在单一配置中,我为每个Web服务出站网关定义了单独的通道 . 我想通过使用链接来减少 endpoints 之间的通道定义并且效果很好 .
我需要问的是,是否可以在各种Web服务出站网关之间共享相同的通道?我是否只能定义一个2个Web服务出站将侦听消息的 Channels ?
如果是,那么SI如何识别信道-1上的消息-1用于网关-1,而信道-1上的消息-2用于网关-2等等?是否有必要为每个Web服务出站网关定义唯一的通道?
- 感谢MS
1 回答
是的,通常,每个网关都需要自己的 Channels .
然而...
如果要将 SAME 消息发送到两个网关,可以使用
<publish-subscribe-channel/>
.如果你想在同一服务的多个实例中“循环”(负载 balancer ),那么,是的,你只需将每个网关订阅到同一个 Channels ,它们就会交替 .
您可以使用自定义负载 balancer 策略来确定哪个网关将获得消息,但最好只使用路由器并让每个网关都有自己的通道 .
这实际上取决于您的用例,但有很多选择 .
但是,不要陷入试图消除各处 Channels 的陷阱 - 这是Spring Integration的一个引人注目的功能 - 能够在不重新布线整个应用程序的情况下更改 Channels 类型/功能 .