间歇性BridgeHandler&当网关的回复频道为pub / sub时,PublishSubscribeChannel调用

时间:2014-06-27 17:28:41

标签: spring-integration

通过我的频道发送数据时,我看到了奇怪的行为。我在发送要处理的消息时使用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通道创建的,但是当一切正常时我为什么不在日志中看到它?

我很感激任何帮助

1 个答案:

答案 0 :(得分:0)

当你说'#34;失败&#34;你的意思是什么?

rptOutputAvailableChannel上的其他消费者是什么?

您看到的BridgeHandler是信息的replyChannel标题的内部桥梁,这是最终必须回复的地方。当明确发送到rptOutputAvailableChannel时,桥接处理程序始终被调用以获取对消息的临时回复通道的回复。