在我的项目中,我将有两个入口网关具有相同的输入参数,但不同的响应。每个网关都在不同的xml中被声明。问题是当我打电话给gateway1时,它转到xml2而不是xml1。 我们应该如何处理这个问题。在同一个界面春季集成 - 多网关
public interface MessageGateway {
@Gateway(requestChannel="requestChannel1")
@Payload("#args")
public Response1 invoke(Bean bean) throws Exception;
@Gateway(requestChannel="requestChannel2")
@Payload("#args")
public List<Response2> invoke2(Bean bean) throws Exception;
}
两个网关在XML1
<int:gateway id="invoke" default-request-channel="requestChannel1" default-reply-channel="finalResult"
service-interface="<class name>" error-channel="errorChannel" default-reply-timeout="6000"/>
<int:channel id="errorChannel"/>
在XML2
<int:gateway id="invoke1" default-request-channel="requestChannel2" default-reply-channel="finalResult"
service-interface="<class name>" error-channel="errorChannel" default-reply-timeout="6000"/>
<int:channel id="errorChannel"/>
我从另一个调用系统的网关。所以我自动调用网关接口并调用方法。
按照加里的评论添加自动装配
@Autowired
private MessageGateway gateway;
//calling
gateway.invoke(bean);
表现你对两个网关自动装配。 –
将方法放在不同的接口中可能会更好,以避免混淆。通过这种配置,两个网关都有两种方法。 –
自动装配应该失败 - 你有两个bean'invoke'和'invoke1'。春天不知道如何选择自动布线。你或者只需要一个' ',或者你应该把这些方法放在不同的接口上。 –