在 spring 集成中,我正在尝试创建一个具有自定义范围的直接消息 channel ,如下所示
...
<int:channel id="myChannel" scope="validCustomScope" />
<int:service-activator ref="validSericeReference_WithSameValidCustomScope" method="handleMessage" input-channel="myChannel"/>
...
但是,我遇到了一个异常..
org.springframework.integration.MessageDeliveryException: Dispatcher has no subscribers for channel
注意:此自定义作用域适用于其他 bean。 此问题与讨论的内容相似 here ,但没有解决。如果有人可以帮助解决这个问题,那将是一个巨大的帮助。
最佳答案
服务激活器只会订阅其中一个实例。其他人将抛出 Dispatcher has no subscribers
。
当服务激活器被 start()
编辑时,您的自定义范围需要弄清楚如何为每个实例传播订阅(服务激活器的 MessageHandler
),然后将其传播到端点启动之后
创建的任何新实例。
可能不平凡。
就是说。我不清楚将消息发送到非作用域服务的作用域 channel 的好处。
也许如果您解释了您尝试使用自定义范围执行的操作,那么可能会有一个通用的解决方案,但我猜它需要在自定义范围中使用一些棘手的代码。
关于java - 自定义 Spring Scope 不适用于消息 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22416223/