Spring integration 使用带有处理链的网关,Dispatcher没有订阅服务器错误
我有以下配置,不确定是什么问题,我不断得到这个错误,感谢您的帮助,谢谢Spring integration 使用带有处理链的网关,Dispatcher没有订阅服务器错误,spring-integration,Spring Integration,我有以下配置,不确定是什么问题,我不断得到这个错误,感谢您的帮助,谢谢 <int:chain input-channel="incoming"> <int:splitter ref="split"/> <int:filter ref="filter" discard-channel="loggit" /> <int:payload-type-router default-out
<int:chain input-channel="incoming">
<int:splitter ref="split"/>
<int:filter ref="filter" discard-channel="loggit" />
<int:payload-type-router default-output-channel="loggit" >
<int:mapping type="a.b.c" channel="channel1" />
</int:payload-type-router>
</int:chain>
<int-jdbc:stored-proc-outbound-gateway
id="DB_POLLAR"
data-source="dataSource"
request-channel="channel1"
reply-channel="loggit"
is-function="false"
expect-single-result="false"
stored-procedure-name="PKG.proc_get">
<int-jdbc:parameter name="rowid" expression="payload" />
<int-jdbc:returning-resultset name="ataset" row-mapper="dataMapper"/>
<int-jdbc:request-handler-advice-chain>
<bean class="com.a.b.c.DbCallAdvice" />
</int-jdbc:request-handler-advice-chain>
</int-jdbc:stored-proc-outbound-gateway>
是一个请求/回复
组件,因此如果目标过程返回某个内容,它将被包装到回复消息
,框架将尝试将其发送到输出(回复)-通道
因为您没有它,也没有replyChannel
头,所以最后会出现Dispatcher没有订户错误
如果您对该程序不感兴趣<代码>回复<代码>,请考虑使用
<int-jdbc:stored-proc-outbound-channel-adapter>
我有另一个存储的proc出站网关,它是通过有效负载类型路由器连接的,出于某种原因,它没有这个问题,非常困惑。我确实有reply channel=“loggit”在那里,或者我遗漏了什么?哦!很抱歉我明白了。您是否有订阅该loggit
频道的组件?请显示,StackTrace在MatterHanks Artem上,loggit是记录通道适配器,现在打印。我能够解决这个问题,但我不知道为什么会发生这种情况。我在文件中定义了第三个,我还没有连接,但是我已经为这个设置了与生成错误的id相同的id。将其ID更改为其他内容修复了错误,如果您可以帮助了解其工作原理的话。Agr。。。是的,这是一个问题。当多个SpringBean具有相同的id
时,只有最后一个获胜。因此,新的未完成组件会破坏您的正确组件。这就是为什么您的channel1
引发该异常的原因,因为ApplicationContext没有用于该异常的使用者。再次感谢,顺便说一句,我的SP由于“包名应使用“.withCatalogName”单独指定而失败,但我在配置中看不到这样做的方法?