如何确保Camel的ProducerTemplate等待CamelContext启动

时间:2015-05-07 19:14:36

标签: spring apache-camel

我正在尝试使用@EndpointInject批注来创建一个ProducerTemplate来将我的POJO桥接到CamelContext(如http://camel.apache.org/pojo-producing.html所述)。

我遇到的问题是,在启动camel上下文中的所有路由之前,ProducerTemplate会被注入到我的POJO中。因此,当我调用producerTemplate.send(...)时,我收到DirectConsumerNotAvailableException: No consumers available on endpoint...错误。

为了确保在尝试发送到路由之前启动CamelContext,我需要做些什么吗?

2 个答案:

答案 0 :(得分:3)

您可以在直接端点上使用block=true作为选项,它将等待消费者处于活动状态并且正在运行。这应该有所帮助。

否则,您需要自己编写一些代码,等待CamelContext处于启动状态。您可以从注入的ProducerTemplate getCamelContext获取对它的访问权限。

另一个替代方法是让依赖注入框架(如果可能)在 Camel之后设置bean 。如果您使用的是spring xml,那么它可以在depends-on标记上设置<bean>属性。

答案 1 :(得分:0)

我不明白您的回答。克劳斯·易卜生的问题是生产者而不是消费者。 我的建议使用春季活动

@EventListener(ApplicationReadyEvent.class)
public void onApplicationEvent() {
    producerTemplate.sendBody("demo");

}