В моем проекте у меня будет два входящих шлюза с одинаковыми входными параметрами, но разными ответами. Каждый шлюз называется объявленным в другом 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);
<gateway>
и укажите конкретныеrequest-channel
для каждого@Gateway
метода. 15.06.2017