Java Vertx多线程辅助程序verticle不';t并行处理消息

Java Vertx多线程辅助程序verticle不';t并行处理消息,java,multithreading,vert.x,Java,Multithreading,Vert.x,我们使用Vertx3.0.0 情况: 我们有带REST处理器的主垂直面 REST处理程序通过事件总线调用worker,如下所示: vertx.eventBus().send( "sample.data", "hello vert.x", r -> { System.out.println("[Main] Receiving reply ' " + r.result().body()

我们使用Vertx3.0.0

情况:

我们有带REST处理器的主垂直面

REST处理程序通过事件总线调用worker,如下所示:

vertx.eventBus().send(
            "sample.data",
            "hello vert.x",
            r -> {
                System.out.println("[Main] Receiving reply ' " + r.result().body()
                        + "' in " + Thread.currentThread().getName());
            }
    );
我们有工人垂直,这是我们执行垂直的方式:

vertx.deployVerticle("com.example.Worker",
                            new DeploymentOptions().setWorker(true).setMultiThreaded(true));
以下是Worker实现:

public class Worker extends AbstractVerticle {


@Override
public void start() throws Exception {
    System.out.println("[Worker] Starting in " + Thread.currentThread().getName());

    vertx.eventBus().consumer("sample.data", message -> {
        System.out.println("[Worker] Consuming data in " + Thread.currentThread().getName());
        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        String body = (String) message.body();
        message.reply(body.toUpperCase());
    });

}
}
如果我多次请求REST服务,那么所有消息都会在Worker中按顺序处理。为什么多线程在这里不起作用?worker的多线程选项的目的是什么(文档中不清楚它到底是如何工作的)


顺便说一句,如果我使用部署选项执行多个Worker实例,那么我将获得消息的并行处理。例如,2个工作者实例可以同时处理2条消息。

好的,在与Vert.x团队进行了简短调查后,这个问题似乎在昨天的V3.1.0版本中得到了解决。 以下是有关此主题的一些讨论:

我正在尝试对verticle的多个实例执行类似的操作,但即使这样,我的请求也不会并行处理。这里添加了一些详细信息-