Asynchronous 基于Camel的异步非阻塞多播
我有两个疑问: 1.我们可以在camel中使用非阻塞异步路由吗。我确实看到seda与async,但是如果将工作转移到其他阻塞的线程上。 2.如果是这样,我们可以在这样的路由中使用多播。 以下是我的多步骤骆驼路线,似乎有效。但不确定它是异步还是非阻塞异步Asynchronous 基于Camel的异步非阻塞多播,asynchronous,apache-camel,nonblocking,spring-camel,Asynchronous,Apache Camel,Nonblocking,Spring Camel,我有两个疑问: 1.我们可以在camel中使用非阻塞异步路由吗。我确实看到seda与async,但是如果将工作转移到其他阻塞的线程上。 2.如果是这样,我们可以在这样的路由中使用多播。 以下是我的多步骤骆驼路线,似乎有效。但不确定它是异步还是非阻塞异步 from("direct:multiStep") .to("bean:routeHandler?method=monoReturningMethod1") .process(new Unwrap
from("direct:multiStep")
.to("bean:routeHandler?method=monoReturningMethod1")
.process(new UnwrapStreamProcessor())
.to("bean:routeHandler?method=monoReturningMethod2")
.process(new UnwrapStreamProcessor())
上述工作和web请求都有来自monoReturningMethod
的响应。在这种情况下,我想确保所有进程都是非阻塞的
对于多播,我正在试验以下路由。不确定将解包流处理器放在何处
。我试图将它放在end()
之后,但它不起作用。我需要定制的处理器吗?或者如何将所有Mono
返回绑定到一个
from("direct:incoming")
.multicast()
.parallelProcessing()
.to("bean:routeHandler?method=monoReturningMethod1", "bean:routeHandler?method=monoReturningMethod2")
.end()
我正在使用Apache3.0.1和SpringBootStarter
@Component("routeHandler")
public class RouteHandler {
Mono<Entity> monoReturningMethod1(Exchange exchange) {
//make some WebClient request which returns Mono.
}
Mono<Entity> monoReturningMethod2(Exchange exchange) {
//make some WebClient request which returns Mono.
}
}
@组件(“路由处理器”)
公共类路由处理器{
Mono monoReturningMethod1(交换){
//发出一些返回Mono的WebClient请求。
}
Mono monoReturningMethod2(交换){
//发出一些返回Mono的WebClient请求。
}
}
此路由处理传入的web请求。如何使所有路由处理无阻塞和异步。我尝试过在monoReturningMethod
之后使用过程(新的UnwrapStreamProcessor())
作为过程步骤,如果我按顺序操作,它就会工作。但它不适用于多播,并且不允许对原始消息进行覆盖。
有什么建议吗
PS:我正在启动异步流,如下所示:
producerTemplate.asyncSend(“RouteName”,exchange)
,异步路由引擎支持所有,但并非所有。某些组件的支持有限,即它们只能使用或生成异步
您可以在路由中使用告诉Camel,从转发点开始,消息应该在新线程中异步路由。,异步路由引擎支持所有消息,但不支持所有消息。某些组件的支持有限,即它们只能使用或生成异步
您可以在路由中使用来告诉Camel,从转发点开始,消息应该在新线程中异步路由