Apache kafka 阻止quarkus/vertx反应性消息中的kafka消息处理程序
我有一个从kafka队列读取的Quarkus应用程序,处理每个消息可能需要几秒钟。它们可以并行处理。但是,我无法让Kafka消费者使用反应式消息传递应用程序提供的工作线程池从队列中并行读取消息 我的代码:Apache kafka 阻止quarkus/vertx反应性消息中的kafka消息处理程序,apache-kafka,vert.x,quarkus,Apache Kafka,Vert.x,Quarkus,我有一个从kafka队列读取的Quarkus应用程序,处理每个消息可能需要几秒钟。它们可以并行处理。但是,我无法让Kafka消费者使用反应式消息传递应用程序提供的工作线程池从队列中并行读取消息 我的代码: public class SlowKafkaConsumer { @Blocking(ordered = false) @Incoming("topic") public void onMessage(String message) throws
public class SlowKafkaConsumer {
@Blocking(ordered = false)
@Incoming("topic")
public void onMessage(String message) throws InterruptedException {
Thread.sleep(1000);
System.out.println(Thread.currentThread().getName() + " " + Instant.now().toString() + " " + message);
}
}
我在这里用Thread.sleep模拟一个缓慢的消费者,但是我在方法上添加了@Blocking
和ordered=false
。从中,我希望能够同时处理20条(默认线程池大小)消息
但是,我从程序中得到的输出是:
vert.x-worker-thread-0 2020-11-13T13:25:09.867905300Z Hello
vert.x-worker-thread-1 2020-11-13T13:25:10.885309700Z Hello
vert.x-worker-thread-2 2020-11-13T13:25:11.887364600Z Hello
vert.x-worker-thread-3 2020-11-13T13:25:12.889545300Z Hello
正如您所看到的,每个消息都由不同的线程处理(我可以看到它最终会使用多达20个不同的线程),但每个消息都是按顺序处理的,每个消息之间的间隔为1秒,而不是同时处理20个线程
有人能帮我指出哪里出了问题吗