Я хотел бы использовать Camel в качестве точки интеграции для приложения, которое я разрабатываю. Мое намерение состоит в том, чтобы из моего приложения вводить сообщения в верблюда, а также получать сообщения от верблюда и через контекстный маршрут верблюда, что делать с этими сообщениями при запуске приложения. Из проведенного мной исследования следует, что ProducerTemplate/ConsumerTemplate — это способ общения с маршрутами, определенными в контексте верблюда. Однако, когда я публикую «direct:connect» с помощью ProducerTemplate, я получаю исключение «Нет доступных потребителей». Это происходит даже несмотря на то, что route1 может взаимодействовать с route2, и я получаю сообщение журнала, в котором говорится:
Route: route2 started and consuming from: Endpoint[direct://connect]
Может ли кто-нибудь дать рекомендации о том, как лучше всего использовать Camel для моих целей?
CamelEval.java
public class CamelEval {
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext ("camel-streams.xml");
SpringCamelContext sctx = new SpringCamelContext (ctx);
sctx.start();
sctx.createProducerTemplate().sendBody("direct:connect", "hello world");
Thread.sleep (5000);
}
}
верблюд-streams.xml
<camelContext trace="true" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="stream:in?promptMessage=Enter Something: "/>
<transform>
<simple>${body.toUpperCase()}</simple>
</transform>
<to uri="direct:connect"/>
</route>
<route>
<from uri="direct:connect"/>
<to uri="stream:out"/>
</route>
</camelContext>