小编Rum*_*hev的帖子

Apache Camel:asyncCallback回复线程在Camel 17和Camel 18/19中更改

对于高达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)

java concurrency apache-camel

5
推荐指数
0
解决办法
409
查看次数

标签 统计

apache-camel ×1

concurrency ×1

java ×1