我一直在谷歌以及Stackoverflow上搜索此问题。我已经看到其他几个人报告了同样的例外情况,虽然我明白了建议的解决方案是什么,但如果我愿意见证完全相同的问题,我不是100%。
当然,这是例外:
我有一个有两条路线的Camel项目。这是一个简化:
<route>
<from uri="jetty://http://0.0.0.0:8181/listener"/>
<to uri="direct:ProcessMessage"/>
</route>
<route>
<from uri="direct:ProcessMessage"/>
...
</route>
因此,此代码段大部分时间都能正常运行。但是,我试图测试代码的可伸缩性。系统什么时候开始失败?
当在上面的侦听器端点上发送每秒100条消息时(使用Jetty),我开始在日志中看到这一点:
org.apache.camel.component.direct.DirectConsumerNotAvailableException: No consumers available on endpoint: Endpoint[direct://ProcessMessage]
我所看到的解决方案表明这是因为路由的顺序(即它们如何初始化)。如果在这种情况下确实如此,为什么这只会在较重的负载下发生,而不是一直发生?
答案 0 :(得分:0)
因为它只在负载下发生,我敢打赌消费者受到限制。尝试使用jconsole监视队列的大小。我会尝试在直接队列中查找大小限制。