Я хочу использовать шлюз в нескольких потоках. Мое определение шлюза:
@Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public MarshallingWebServiceOutboundGateway myServiceGateway() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setPackagesToScan("blah.*");
MarshallingWebServiceOutboundGateway gateway = new MarshallingWebServiceOutboundGateway(
serviceEndpoint, marshaller, messageFactory);
gateway.setMessageSender(messageSender);
gateway.setRequestCallback(messageCallback);
return gateway;
}
Обратите внимание, что я определил bean-компонент шлюза сообщений в прототипе области видимости, чтобы Spring создавал несколько экземпляров шлюза. Тем не менее при запуске я получаю это сообщение:
Caused by: java.lang.IllegalArgumentException: A reply MessageProducer may only be referenced once (myServiceGateway) - use @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) on @Bean definition.
Почему он настаивает на том, что на шлюз нельзя ссылаться более одного раза, и как я могу использовать один и тот же шлюз из нескольких потоков?
Использование Spring-Integration 5.0.4
myServiceGateway
? Я только что провел тест, и у меня все получилось. Также добавьте полную трассировку стека. - person Gary Russell   schedule 02.05.2018