是否可以为编组Web服务出站网关设置动态提供程序?
我的意思是,如果我尝试例如:http://100.0.0.1并且它不起作用,我想尝试http://100.0.0.2而不是
我目前的配置:
MarshallingWebServiceOutboundGateway gw = new MarshallingWebServiceOutboundGateway(provider, jaxb2Marshaller(), jaxb2Marshaller());
答案 0 :(得分:1)
是的,这是真的。由于MarshallingWebServiceOutboundGateway
允许注入DestinationProvider
,因此您可以随意提供任何自定义实现。
对于您的fault-tolerant
用例,您应执行:new URLConnection(url).connect()
以测试与DestinationProvider
实施的目标服务器的连接。
<强>更新强>
但是,如果我有https凭据,证书或任何类型的安全性,我如何测试新的URLConnection(url).connect()
嗯,Spring Integration的另一个很好的解决方案是load-balancing
和同一个DirectChannel
的几个订阅者:
@Bean
public MessageChannel wsChannel() {
return new DirectChannel(null);
}
切换默认RoundRobinLoadBalancingStrategy
。
之后你可以有几个@ServiceActivator(inputChannel="wsChannel")
。当第一个失败时,消息将被发送到第二个,依此类推,直到每个URL的良好结果或下降。