Camel; Простой маршрут от седы к бобу не сработает
Я новичок в Camel и пытаюсь настроить очень простое приложение, чтобы привыкнуть к нему, я запускаю следующий код:
CamelContext cc = (CamelContext)ac.getBean("testCamelContext");
ProducerTemplate template = cc.createProducerTemplate();
System.out.println("Sending Message Body");
template.sendBody("seda:testProducer", "hello");
System.out.println("Sent");
Что работает нормально, но мой потребитель, кажется, никогда не принимает сообщение, на консоли я получаю следующее:
[ main] SpringCamelContext INFO Apache Camel 2.10.2 (CamelContext: testCamelContext) is starting
[ main] ManagementStrategyFactory INFO JMX enabled.
[ main] DefaultTypeConverter INFO Loaded 172 type converters
[ main] SpringCamelContext INFO Route: route1 started and consuming from: Endpoint[seda://testProducer]
[ main] ultManagementLifecycleStrategy INFO StatisticsLevel at All so enabling load performance statistics
[ main] SpringCamelContext INFO Total 1 routes, of which 1 is started.
[ main] SpringCamelContext INFO Apache Camel 2.10.2 (CamelContext: testCamelContext) started in 0.373 seconds
Init Context
SendingMessage
Sending Message Body
Sent
Используя следующий верблюжий контекст:
<camel:camelContext id="testCamelContext">
<camel:routeBuilder ref="testCamelRouteBuilder"/>
</camel:camelContext>
И правило RouteBuilder:
from("seda:testProducer").beanRef("testConsumer","consumeMessage");
И следующий потребительский боб:
public class TestConsumer {
public void consumeMessage(String msg)
{
System.out.println("Message: " + msg);
}
}
Все бобы в порядке, и верблюд, кажется, хорошо понимает правило, поэтому я не уверен, что сделал неправильно. Я явно не правильно что-то использую?
1 ответ
Решение
Осознал ошибку; Поскольку seda является асинхронным, основной поток заканчивал работу до того, как потребительский поток получил возможность получить сообщение. Добавил thread.sleep(), и он работал отлично.