使用端点DSL,然后用ProducerTemplate引用端点的正确方法是什么?当创建路由并使用端点DSL时,Camel似乎为端点创建了一个不同的uri。我的EndpointRouteBuilder类。
@Component
public class MyRoutes extends EndpointRouteBuilder {
@Override
public void configure() throws Exception {
from(seda("STATUS_ENDPOINT"))
.routeId("stateChangeRoute")
.to(activemq("topic:statusTopic"))
}
}
然后把端点注入到ProducerTemplate中去
@Component
public class StateChangePublisher {
@EndpointInject(value="seda:STATUS_ENDPOINT")
private ProducerTemplate producer;
public void publish(String str) {
try {
producer.sendBody(str);
} catch(CamelExecutionException e) {
e.printStackTrace();
}
}
}
当camel启动时,我在日志中看到两个条目。
o.a.camel.component.seda.SedaEndpoint : Endpoint seda:STATUS_ENDPOINT is using shared queue: seda:STATUS_ENDPOINT with size: 1000
o.a.camel.component.seda.SedaEndpoint : Endpoint seda://STATUS_ENDPOINT is using shared queue: seda://STATUS_ENDPOINT with size: 1000
队列最终被填满,没有任何东西被送到 "to "端点。 如果我定义路由而不使用端点DSL方法 "seda()"
from("seda:STATUS_ENDPOINT")
那么它的工作.这是一个错误或我做错了什么?我使用的是camel 3.2.0和
这是端点dsl中的一个bug。尝试升级到camel 3.3.0。我想在新版本中已经修复了这个问题。