java - 并行多播路由,末尾有 POST
问题描述
我有一条骆驼路线,它接收一条包含多个任务的消息。使用并行多播,我可以并排运行这些任务。这似乎有效。但是,我需要在任何任务完成后立即发布任务结果。相反,在 postResult 可以发回结果之前,它会等待两种任务类型完成。
class Tasks
List<Task> tasks;
class ParallelTask1
// Return taskResult1
class ParallelTask2
// Return taskResult2
class PostTaskResult
// Post Result
如何修改这条路线以并行发布?
from(tasks)
.multicast()
.parallelProcessing()
.to(parallelTask1)
.to(parallelTask2)
.end()
.to(postResult);
解决方案
不确定是否完全理解要求,但您可以将 postResult 内容移动到“内部”而不是“外部”多播:
from(tasks)
.multicast()
.parallelProcessing()
.to("direct:parallelTask1")
.to("direct:parallelTask2")
.end()
.log("All tasks are terminated");
from("direct:parallelTask1")
.to(parallelTask1)
.log("Task1 terminated")
.bean(postResult, "postTask1Result");
from("direct:parallelTask2")
.to(parallelTask2)
.log("Task2 terminated")
.bean(postResult, "postTask2Result");
推荐阅读
- mysql - 从 SQL 数据库中提取一个整数值用于计算
- python-3.x - 使用 Anaconda 的 Sublime 3 中的 Numpy 错误
- c# - 点网核心中的存储过程
- javascript - three.js:使用 CircleGeometry 在 LineLoop 中的间隙
- google-cloud-platform - 写入 Spanner 的数据流作业中的 EOFException
- python - 是否可以从 Python 中的 CSV 行创建 GUID?
- ruby - 为什么在 Ruby 中使用 gsub 函数时,ruby 的行为就像通过引用传递?
- ios - 图表框架未加载(swift4)
- objective-c - Xcode 地图显示位置区域,但不显示位置点
- typescript - 解决 Protractor 中 browser.findElements 上的承诺的问题