如何让 Vert.x EventBus.send 顺序处理请求?

How to make Vert.x EventBus.send process requests sequentially?

我是 vert.x 的新手,想知道是否可以通过某种方式配置事件总线以使其始终如一地工作?

我的意思是需要使用vert.x

一个一个发送请求

目前我得到这段代码,它使用事件循环原理并等待所有处理程序完成,但我不需要那么快完成,想法是让服务器同时从大量请求中解脱出来。这里 eb_send() 使用默认的 EventBus.send() 方法。换句话说我想用阻塞执行所有请求,在请求之前等待答案。

List<Future> queue = new ArrayList<>();

files.forEach(fileObj -> {
                Future<JsonObject> trashStatusHandler = Future.future();
                queue.add(trashStatusHandler);


                eb_send(segment, StorageType.getAddress(StorageType.getStorageType(fileInfo.getString("storageType"))) + ".getTrashStatus", fileInfo, reply -> {
                    Entity dummy = createDummySegment();
                    try {
                        if (reply.succeeded()) {
                            //succeded
                        }
                    } catch (Exception ex) {
                        log.error(ex);
                    }
                    trashStatusHandler.complete();
                });
            });

基本思想是将其提取到一个函数中,您将递归调用该函数。

public void sendFile(List<File> files, AtomicInteger c) {
    eb_send(segment, StorageType.getAddress(StorageType.getStorageType(fileInfo.getString("storageType"))) + ".getTrashStatus", fileInfo, reply -> {
                    Entity dummy = createDummySegment();
                    try {
                        if (reply.succeeded()) {
                            //succeded
                        }
                        // Recursion 
                        if (c.incrementAndGet() < files.size()) {
                            sendFile(files, c);
                        }
                    } catch (Exception ex) {
                        log.error(ex);
                    }
                });
}