Apache Camel ProducerTemplate
Apache Camel ProducerTemplate
您好,我正在使用 apache camel + Spring 并定义了一个类似
的配置
public class MyOrderConsumerRouterBuilder extends RouteBuilder implements InitializingBean, ApplicationContextAware{
@Override
public void configure() throws Exception {
from("seda:asyncChannel?concurrentConsumers=20").id("asyncProcessChannelFromId")
.to("bean:OrderProcessManager?method=processOrders").id("asyncProcessChannelToId");
}
}
这个Producer是多线程的吗?我看到消费者是多元的。在我的例子中是 : concurrentConsumers=20
我检查了下面URL
How do I configure the default maximum cache size for ProducerCache or ProducerTemplate
根据源代码 DefaultCamelContext.createProducerTemplate() DefaultCamelContext DefaultProducerTemplate 正在使用 maximumCacheSize(默认 1000)
创建
据我所知,可以有多个生产者使用 maximumCacheSize 作为 LRU 定义。在我的例子中,我只有一个端点,即 SEDA,所以只有一个生产者。
所以我认为总会有一个单线程生产者。请帮助我更好地理解它。
生产者不是多线程,但有多个生产者。
在您的情况下,有 20 个消费者(线程)正在等待消息。如果一条消息到达,它会根据其中一个线程的路由定义进行处理。
如果另一条消息到达,处理第一条消息的线程可能仍然被占用,但其他 19 个空闲线程中的一个可以处理该消息。
只要没有拆分器、聚合器和类似的 EIP,单个线程 "walks" 消息就会通过您的路由,在您的情况下最终将消息发送到 OrderProcessManager
bean。所以这个生成步骤(调用 bean 方法)显然是由单个线程为单个消息完成的。
但是因为最多可以有 20 个线程并行处理消息,所以 OrderProcessManager
bean 最多可以被 20 个生产者(线程)并行调用。
您好,我正在使用 apache camel + Spring 并定义了一个类似
的配置public class MyOrderConsumerRouterBuilder extends RouteBuilder implements InitializingBean, ApplicationContextAware{
@Override
public void configure() throws Exception {
from("seda:asyncChannel?concurrentConsumers=20").id("asyncProcessChannelFromId")
.to("bean:OrderProcessManager?method=processOrders").id("asyncProcessChannelToId");
}
}
这个Producer是多线程的吗?我看到消费者是多元的。在我的例子中是 : concurrentConsumers=20
我检查了下面URL
How do I configure the default maximum cache size for ProducerCache or ProducerTemplate
根据源代码 DefaultCamelContext.createProducerTemplate() DefaultCamelContext DefaultProducerTemplate 正在使用 maximumCacheSize(默认 1000)
创建据我所知,可以有多个生产者使用 maximumCacheSize 作为 LRU 定义。在我的例子中,我只有一个端点,即 SEDA,所以只有一个生产者。
所以我认为总会有一个单线程生产者。请帮助我更好地理解它。
生产者不是多线程,但有多个生产者。
在您的情况下,有 20 个消费者(线程)正在等待消息。如果一条消息到达,它会根据其中一个线程的路由定义进行处理。
如果另一条消息到达,处理第一条消息的线程可能仍然被占用,但其他 19 个空闲线程中的一个可以处理该消息。
只要没有拆分器、聚合器和类似的 EIP,单个线程 "walks" 消息就会通过您的路由,在您的情况下最终将消息发送到 OrderProcessManager
bean。所以这个生成步骤(调用 bean 方法)显然是由单个线程为单个消息完成的。
但是因为最多可以有 20 个线程并行处理消息,所以 OrderProcessManager
bean 最多可以被 20 个生产者(线程)并行调用。