org.apache.camel.component.direct.DirectConsumerNotAvailableException: 端点上没有可用的消费者:端点[direct:// start]
当我尝试以下代码时,我收到错误。
public static void main(String args[]) throws Exception {
CamelContext context = new DefaultCamelContext();
ProducerTemplate template = context.createProducerTemplate();
ConsumerTemplate consumer = context.createConsumerTemplate();
consumer.start();
String response = IOUtils.toString(new FileInputStream(args[0]));
template.sendBody("direct:start", response);
Exchange out = consumer.receive("direct:start");
Thread.sleep(10000);
consumer.stop();
}
但是按照以下方式工作
public static void main(String args[]) throws Exception {
CamelContext context = new DefaultCamelContext();
final DataFormat dataFormat = new BindyCsvDataFormat(TTlabsResponse.class);
RouteBuilder rb = new RouteBuilder() {
public void configure() {
from("file://src/test/resources?noop=true&fileName=tsv.txt")
.unmarshal(dataFormat).process(new SimpleProcessor());
}
};
context.addRoutes(rb);
context.start();
Thread.sleep(10000);
context.stop();
}
答案 0 :(得分:1)
在第一个中,您没有从direct:start
端点消耗的路由以及当您尝试将消息发送到没有消费者的direct
端点时出现错误的原因。
直接端点就像直接方法调用,需要消费者。
您可以发送使用队列的seda
来解耦生产者和消费者。
详见