在 Spring 应用程序中使用 futures 处理并行异步操作

Handle parallel async operations with futures in Spring App

我有一个包含 +1M 条目的数据库,我正在以块的形式查询数据库(假设 chunkSize = 1000)。

迭代这 1000 个块,我想为每个实体向 rabbitMQ 发布一条消息,将这个块的所有未来收集到 array/list。

在这个 futures 数组上等待,直到所有 futures 都是 completed/failed,然后将这个 1000 的数组过滤到两个新列表(successList,failureList),然后为 mongoDB 准备两个 bulkUpdate 操作,然后执行两个操作。

我必须逐块等待,否则,下一次迭代(用于获取数据库实体)将重新读取已经在进行中的实体。

PS:我最初的假设是在列表中使用 CompletableFutures(与我在 Javascript 中所做的相同,不确定 java 是否有任何其他方法)

Spring 中所述,AMQP 允许您在 CorrelationData 中等待 Future 以获得发布消息的结果。您不需要发明自己的机制。

如果您想存储有关发送的更多信息,您始终可以子类化 CorrelationData