【问题标题】:Spring Integration: Direct Channel multiple outgoing endpointSpring Integration:直接通道多个传出端点
【发布时间】:2014-10-21 08:23:20
【问题描述】:

请多多包涵,因为我对 Spring Integration 还是很陌生,昨天才开始阅读。

我要做的是为来自我的 Spring 应用程序的传出 HTTP 调用执行各种负载平衡。我知道我可以使用我正在寻找的 Direct Channel 实现循环和故障转移。但我不太确定用什么来配置拨出电话。

我读过这个帖子 Adapt dynamically outbound-gateway with load-balancing

在 OP 中,我看到了这个 outbound-gateway 标记,其中包含 url 和方法属性。我是否正确地假设我可以使用它来配置我的传出 http 呼叫?希望有人能指出我正确的方向。

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: java spring spring-integration


    【解决方案1】:

    round-robin 有一个简单的算法:每次调用都会将订阅者 index 在这些订阅者的 order 中移动一个圆圈。

    因此,如果您需要使用 round-robin 调用 HTTP,您应该配置如下内容:

    <channel id="balanceChannel"/>
    
    <bridge input-channel="balanceChannel" output-channel="httpChannel"/>
    
    <bridge input-channel="balanceChannel" output-channel="httpChannel"/>
    
    <bridge input-channel="balanceChannel" output-channel="httpChannel"/>
    
    <int-http:outbound-gateway request-channel="httpChannel" url="MY_URL"/>
    

    如果任何sendbalanceChannel 最终都会在目标中出现相同的HTTP 调用。

    实际上它对同一个 HTTP 没有意义,因为&lt;int-http:outbound-gateway&gt; 是线程安全的,并且可以从单独的线程并发使用。

    round-robin 在您的目标服务不是线程安全和阻塞的情况下有意义,因此最好为该服务提供多个实例。

    failoverload-balancing="none" 时有意义。因此,第一个订阅者的失败将被处理到第二个订阅者,依此类推。

    【讨论】:

      猜你喜欢
      • 2018-10-20
      • 1970-01-01
      • 2022-01-17
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      • 2015-01-29
      相关资源
      最近更新 更多