0

私は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 にデプロイすると、最初にメッセージが通過して後続のフローが終了しますが、フローの後半にいくつかのエラーがあります。

2 回目以降、メッセージは "Channel-1" まで到達しますが、それを超えることはありません。エラーもログもありません。すべて DEBUG モードであり、何の痕跡もありません。

だから私の質問は:

1) フローの後半で発生しているエラーがそのような問題の原因ですか?

2) 理由もなく、エラーもなく、このようなメッセージのドロップをデバッグするにはどうすればよいですか?

3)これらのチャネルを掘り下げるためのその他の提案や指針は素晴らしいでしょう

4

1 に答える 1

1
  1. いいえ

  2. デバッグ モードでは、実際にチャネル 1 にメッセージを送信している場合、「チャネル 'Channel-1' で preSend...」、「チャネル 'Channel-1' で postSend...」などと表示されます。

  3. よくある間違いは、Channel-1 に複数のサブスクライバーを持っていることです。デフォルトでは、RoundRobin 分散が使用されます。したがって、最初のメッセージはチャネル 2 にブリッジされ、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}]
于 2012-11-06T02:15:49.060 に答える