我有一个严重的问题。我有一种情况,我需要向 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 会收到它,它会发送回复并转发它。现在生成了第二条消息,它被发送到 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.
我试图通过延迟消息来规避这个问题,但它没有帮助。我可以通过禁用死锁来克服错误,但这并不是真正的解决方案。
任何人都可以帮忙吗?