Spring integration spring集成:MessageProducer只能被引用一次

Spring integration spring集成:MessageProducer只能被引用一次,spring-integration,spring-integration-dsl,Spring Integration,Spring Integration Dsl,我想在多个流中使用网关。我的网关定义是: @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public MarshallingWebServiceOutboundGateway myServiceGateway() { Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); marshaller.setPackagesToScan("blah.*"); Marsh

我想在多个流中使用网关。我的网关定义是:

@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;
}
注意,我在scope原型中定义了消息网关bean,因此Spring应该创建多个网关实例。然而,我在启动时收到了这样的信息:

Caused by: java.lang.IllegalArgumentException: A reply MessageProducer may only be referenced once (myServiceGateway) - use @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) on @Bean definition.
为什么它坚持一个网关不能被多次引用?我如何从多个流中使用同一个网关


使用SpringIntegration5.0.4

我发现您多次使用了类似于
.handle(myServiceGateway())
的东西

在这种情况下,您必须从此方法中删除
@Bean
@Scope
。它也可以是私有的。JavaDSL过程将为您创建关于此问题的bean。每个流都有自己的实例。按照你的要求


任何Spring集成组件都不能是
@Scope(ConfigurableBeanFactory.Scope\u PROTOTYPE)
。无论如何,它们都是从非原型bean(
端点
)引用的。因此,从本质上讲,原型bean的范围增加了。

您能展示引用
myServiceGateway
bean的代码吗?我刚做了一个测试,结果很好。还要添加完整的堆栈跟踪。