44.9. 示例
在以下路由中,我们使用 SEDA 队列将请求发送到此 async 队列,以便能够发送 fire-and-forget 消息以进一步处理另一个线程,并将此线程中的恒定回复返回到原始调用者。
我们发送 Hello World 消息,并期望回复是 OK。
@Test public void testSendAsync() throws Exception { MockEndpoint mock = getMockEndpoint("mock:result"); mock.expectedBodiesReceived("Hello World"); // START SNIPPET: e2 Object out = template.requestBody("direct:start", "Hello World"); assertEquals("OK", out); // END SNIPPET: e2 assertMockEndpointsSatisfied(); } @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { // START SNIPPET: e1 public void configure() throws Exception { from("direct:start") // send it to the seda queue that is async .to("seda:next") // return a constant response .transform(constant("OK")); from("seda:next").to("mock:result"); } // END SNIPPET: e1 }; }
"Hello World"消息将消耗来自另一个线程的 SEDA 队列,以便进一步处理。由于这来自于单元测试,因此它将发送到一个 模拟
端点,在单元测试中我们可以进行断言。