我对Spring集成相当新,但到目前为止还在学习。
我从名为“Channel-1”的频道收到消息,然后通过网桥传递给“Channel-2”
<task:executor id="Channel2Executor" pool-size="${executor.pool.size}" rejection-policy="CALLER_RUNS" />
<int:channel id="Channel-2">
<int:dispatcher task-executor="Channel2Executor"/>
</int:channel>
<int:bridge id="adapterParserBridge" input-channel="Channel-1" output-channel="Channel-2">
</int:bridge>
奇怪的是,当我在JBoss中部署应用程序时,第一次消息传递并使我的后续流程结束,尽管在流程的后续部分存在一些错误。
第二次,消息到达“Channel-1”,但永远不会超出 - 没有错误,没有日志,全部在DEBUG模式下,没有任何痕迹。
所以我的问题是:
1)流量后期发生的错误是否会引起这样的问题?
2)如何无故地调试这样的消息,没有任何错误?
3)通过这些渠道钻取的任何其他建议或指示都很棒
答案 0 :(得分:1)
没有
在调试模式下,如果你真的要向频道1发送信息,你会看到“在频道'发送'频道'1'......”,“频道'发送'频道'1'... “等等。
一个常见的错误是在Channel-1上有多个用户;默认情况下,使用RoundRobin分发;因此,第一条消息将桥接到Channel-2,第二条消息将转发给另一个用户等。
使用调试日志记录,如果不至少看到“preSend”调试日志,就不可能向Channel-1发送消息。
21:09:24.825 DEBUG [someThread][org.springframework.integration.channel.DirectChannel] preSend on channel 'foo', message: [Payload=xxx][Headers={timestamp=1352167764822, id=14b8ae47-08d8-4bf6-94bf-e342eb705df4}]