通道丢弃消息如何调试

时间:2012-11-06 01:49:53

标签: spring jboss5.x esb spring-integration

我对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)通过这些渠道钻取的任何其他建议或指示都很棒

1 个答案:

答案 0 :(得分:1)

  1. 没有

  2. 在调试模式下,如果你真的要向频道1发送信息,你会看到“在频道'发送'频道'1'......”,“频道'发送'频道'1'... “等等。

  3. 一个常见的错误是在Channel-1上有多个用户;默认情况下,使用RoundRobin分发;因此,第一条消息将桥接到Channel-2,第二条消息将转发给另一个用户等。

  4. 使用调试日志记录,如果不至少看到“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}]