通过我的频道发送数据时,我看到了奇怪的行为。我在发送要处理的消息时使用SI网关。网关设置如下
<integration:gateway id="rptPubGateway"
default-request-channel="rptPubInChannel"
default-reply-channel="rptOutputAvailableChannel"
default-reply-timeout="60000"
service-interface="xxxx.RptPubGateway" />
回复频道正在设置为发布/订阅频道
<integration:publish-subscribe-channel id="rptOutputAvailableChannel" />
处理消息的最后一个服务正在声明如下
<integration:service-activator input-channel="rptOutputAvailableChannel" ref="requestMessageHandler" method="rptIsDone" output-channel="nullChannel"/>
现在,我遇到的问题是,虽然代码在大多数情况下工作正常,但有时会失败。当一切正常时,处理我的消息的最后一个组件是PublishSubsChannel
PublishSubscribeChannel - preSend on channel 'rptOutputAvailableChannel'
但是当它失败时,最后一个组件变为BridgerHandler
BridgeHandler@e851a798' sending reply Message:
我应该提一下,在处理我的消息时没有抛出异常。 (在失败之后我总是可以重新发送相同的消息,一切都会正常工作)
我不确定BridgerHandler是如何创建的。据我所知,这个桥是为pub / subs通道创建的,但是当一切正常时我为什么不在日志中看到它?
我很感激任何帮助
答案 0 :(得分:0)
当你说'#34;失败&#34;你的意思是什么?
rptOutputAvailableChannel
上的其他消费者是什么?
您看到的BridgeHandler
是信息的replyChannel
标题的内部桥梁,这是最终必须回复的地方。当明确发送到rptOutputAvailableChannel
时,桥接处理程序始终被调用以获取对消息的临时回复通道的回复。