我正在尝试使用@EndpointInject批注来创建一个ProducerTemplate来将我的POJO桥接到CamelContext(如http://camel.apache.org/pojo-producing.html所述)。
我遇到的问题是,在启动camel上下文中的所有路由之前,ProducerTemplate会被注入到我的POJO中。因此,当我调用producerTemplate.send(...)时,我收到DirectConsumerNotAvailableException: No consumers available on endpoint...
错误。
为了确保在尝试发送到路由之前启动CamelContext,我需要做些什么吗?
答案 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");
}