私は深刻な問題を抱えています。複数のメッセージをnettyに送信する必要がある状況があります。これらはすべて同じ場所でキャメルによって生成され、すべてのメッセージへの応答を取得します。
コードは次のようなものです。
from("direct:status")
.split().method("splitMessage", "split").to("direct:device")
from("direct:device")
.to("netty:tcp://4533sync=true&decoders=#myDecoders&encoders=#myEncoders")
.to("direct:send")
splitMessage クラスは、少なくとも 10 個のメッセージを生成します。
最初のメッセージが生成された後、netty はそれを受信し、返信を送信して転送します。そして、2 番目のメッセージが生成され、netty に送信されます。ここから問題が始まります。私はいつもそのようなエラーを受け取ります:
2011-10-14 10:27:14,326 [ent worker #1-3] ERROR DefaultErrorHandler - Failed delivery for exchangeId: ID-Stenver-LapTop-60537-1318576334993-0-24. Exhausted after deliver y attempt: 1 caught: java.lang.IllegalStateException: await*() in I/O thread causes a dead lock or sudden performance drop. Use addListener() instead or call await*() from a differ ent thread.
java.lang.IllegalStateException: await*() in I/O thread causes a dead lock or sudden performance drop. Use addListener() instead or call await*() from a different thread.
メッセージを遅らせることで問題を回避しようとしましたが、役に立ちません。デッドロックを無効にすることでエラーを回避できますが、それは実際の解決策ではありません。
誰でも助けることができますか?