对于高达17.x的Camel版本,Synchronization.onComplete()回调上的所有调用activemq:queue都是在不同的线程中完成的,因此即使onComplete中的响应处理非常慢,消息也没有被阻塞和排队.asyncConsumer=true&defaultTaskExecutorType=ThreadPool&concurrentConsumers=2&maxConcurrentConsumers=100根据我的理解,这应该是配置的结果.因此,此展示的示例输出是:
Received async reply: 2000 OK
Received async reply: 3000 OK
Received async reply: 5000 OK
Received async reply: 9000 OK
Received async reply: 10000 OK
Finished async reply: 2000 OK
Finished async reply: 3000 OK
Finished async reply: 5000 OK
Finished async reply: 9000 OK
Finished async reply: 10000 OK
Run Code Online (Sandbox Code Playgroud)
所以"完成"日志毕竟是"收到",因为每个日志都在另一个线程中调用.所有回复都是异步接收的,处理的时间长短不会影响其他回复的接收.
升级到Camel 18.x(或19.x)后,这已不再相同.现在收到回复和处理(漫长的过程)它阻止接收其他人.这是因为相同的线程用于调用Synchroniztion.onComplete(),因此回复排队直到完全处理.
Received async reply: 2000 OK
Received async reply: 10000 OK
Received async reply: 9000 OK
Finished …Run Code Online (Sandbox Code Playgroud)