apache camel 测试等待多播完成处理
apache camel testing wait multicast to finish processing
apache 骆驼测试
我有我的路由 FirstRoute,它最后多播并发送到 SecondRoute。
我正在编写我的路由测试,我注意到如果 second_route 需要更长的时间来保存数据,则多播会启动新线程 我启动的集成测试 first_route 无法读取数据 b/c second_route 是单独的进程 first_route 信号已经完成处理。
我正在尝试找到一种方法,让我的 first_route 测试在运行我的验证之前等待 second_route 完成处理。
以下是我的路线代码
from("First_route_id")
.process() // bla bla
.multicast()
.to("Second_route_id");
---
from("Second_route_id")
.proces() // save data
.end()
您可以使用 Camel Notify Builder 构建表达式,例如 "when 1 message has completed in my route MySecondRoute"。
示例:
NotifyBuilder notification = new NotifyBuilder(context)
.from("direct:secondRoute").whenDone(1)
.create();
然后您可以等待定义的条件成真并另外传递超时作为参数。
boolean done = notification.matches(10, TimeUnit.SECONDS);
一旦条件变为真,就会通知测试并继续进行。所以你可以把你的断言放在这个点以下。
如果条件不成立,测试将在超时用完后继续。
有关 NotifyBuilder 的更多示例,请参阅 link 到 Camel 文档。
apache 骆驼测试
我有我的路由 FirstRoute,它最后多播并发送到 SecondRoute。
我正在编写我的路由测试,我注意到如果 second_route 需要更长的时间来保存数据,则多播会启动新线程 我启动的集成测试 first_route 无法读取数据 b/c second_route 是单独的进程 first_route 信号已经完成处理。 我正在尝试找到一种方法,让我的 first_route 测试在运行我的验证之前等待 second_route 完成处理。
以下是我的路线代码
from("First_route_id")
.process() // bla bla
.multicast()
.to("Second_route_id");
---
from("Second_route_id")
.proces() // save data
.end()
您可以使用 Camel Notify Builder 构建表达式,例如 "when 1 message has completed in my route MySecondRoute"。
示例:
NotifyBuilder notification = new NotifyBuilder(context)
.from("direct:secondRoute").whenDone(1)
.create();
然后您可以等待定义的条件成真并另外传递超时作为参数。
boolean done = notification.matches(10, TimeUnit.SECONDS);
一旦条件变为真,就会通知测试并继续进行。所以你可以把你的断言放在这个点以下。
如果条件不成立,测试将在超时用完后继续。
有关 NotifyBuilder 的更多示例,请参阅 link 到 Camel 文档。