举个例子:
from("seda:data").log("data added to queue")
.setHeader("CamelHttpMethod", constant("POST"))
.setHeader(Exchange.CONTENT_TYPE, constant("application/json"))
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
exchange.setProperty(Exchange.CHARSET_NAME, "UTF-8");
}
})
.recipientList(header(RECIPIENT_LIST))
.ignoreInvalidEndpoints().parallelProcessing();
假设RECIPENT_LIST标头只包含一个http端点。对于给定的http端点,应按顺序处理消息,但可以并行处理不同端点的两条消息。
基本上,我想知道是否有任何措施可以提高性能。例如,会使用concurrentConsumers帮助吗?
答案 0 :(得分:6)
SEDA with concurrentConsumers> 1绝对有助于吞吐量,因为它允许多个线程并行运行...但是你需要实现自己的锁定机制,以确保在给定时间只有一个线程命中给定的http端点
否则,以下是您的选项概述:http://camel.apache.org/parallel-processing-and-ordering.html
简而言之,如果你可以使用JMS,那么考虑使用ActiveMQ message groups作为它的简单使用,并且专门针对这个用例(并行处理,但是通过消息组单线程等)。