Camel 2.11.0 здесь. У меня есть следующие Camel маршруты:Camel Multicast не работает
<route id="main-route">
<from uri="timer://runOnce?repeatCount=1&delay=10" />
<to uri="bean:loggingBean?method=main" />
<to uri="bean:processorBean?method=doSomething" />
<to uri="bean:loggingBean?method=afterProcessing" />
<multicast>
<to uri="direct:validator" />
<to uri="direct:rejector" />
</multicast>
</route>
<route id="validator-route">
<from uri="direct:validator" />
<to uri="bean:loggingBean?method=validator" />
</route>
<route id="rejector-route">
<from uri="direct:rejector" />
<to uri="bean:loggingBean?method=rejector" />
</route>
... где loggingBean
выглядит следующим образом:
public class LoggingBean {
public void main(Exchange e) {
System.out.println("Starting main route...");
}
public void afterProcessing(Exchange e) {
System.out.println("Processing input...");
}
public void validator(Exchange e) {
System.out.println("In validator route...");
}
public void rejector(Exchange e) {
System.out.println("In rejector route...");
}
}
Когда я запускаю этот код, я получаю следующий вывод на консоль:
Starting main route...
Processing input...
In validator route...
Потому что мы multi -casting здесь, я бы ожидал, что он также включит выход отклонителя и будет выглядеть так:
Starting main route...
Processing input...
In validator route...
In rejector route...
Похоже, что Multicaster отправляет только первый элемент, вложенный внутри него (в Spring XML), а не второй. Хммм, интересно. Затем я изменил <multicast>
элемент выглядеть следующим образом:
<multicast>
<to uri="direct:rejector" />
<to uri="direct:validator" />
</multicast>
На этот раз, вывод консоли выглядит следующим образом:
Starting main route...
Processing input...
In rejector route...
Итак, это подтвердили: <multicast>
только транслирует обмен на первый дочерний элемент, указанный под ним. Почему и как я могу это исправить?
вы хотите отправить оба устройства одновременно, и вы должны перейти на асинхронный канал. Я не знаю, что произойдет в многоадресной рассылке, если первый канал выдаст ошибку. –
Я бы попробовал обновить до последней стабильной версии ветки выпуска 2.11 (2.11.2), а затем повторите попытку. – Ralf