如何使Vert.x EventBus.send按顺序处理请求



我是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);
}
});
} 

相关内容

  • 没有找到相关文章

最新更新