2015-05-26 2 views
0

Мой код выглядит следующим образом:Camel RejectedExecutionException об отправке в Седе очереди

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 асинхронно?

ответ

0

Вам необходимо закодировать процессоры как поточно-безопасные. И приведенный выше код не нить безопасная.

Вы должны инициализировать и очистки логики в методах doStart и doStop в соответствии с жизненным циклом

Там вы можете настроить шаблон производитель один раз, а затем ваш процессор может стать резьбовых безопасно.

Смежные вопросы