发送到seda队列时出现Camel RejectedExecutionException

时间:2015-05-26 16:14:53

标签: java asynchronous apache-camel

我的代码如下:

static ProducerTemplate producer = null;
...
public void process(Exchange exchange) {
    if (producer == null) {
        producer = exchange.getContext().createProducerTemplate();
    }

    for (Message msg : messages){
        Map<String, Object> headers = Maps.newHashMap();
        headers.put("DisplayMessages", true);
        producer.sendBodyAndHeaders("seda:aggregate-messages?blockWhenFull=true&size=500", msg, headers);
    }
}

我在第RejectedExecutionException null行投了producer.sendBody...

据我所知,这通常是由尝试沿非异步路由发送多个异步交换引起的。但是,SEDA不是异步的吗?

1 个答案:

答案 0 :(得分:0)

您需要将处理器编码为线程安全的。上面的代码是线程安全。

您应该根据生命周期在doStartdoStop方法中初始化和清理逻辑

在那里,您可以设置一次生产者模板,然后您的处理器可以变为线程安全。