Java 驼峰直接端点异常
我有一个简单的问题。我无法从文件端点读入直接端点。下面是代码片段:Java 驼峰直接端点异常,java,apache-camel,Java,Apache Camel,我有一个简单的问题。我无法从文件端点读入直接端点。下面是代码片段: public class SampleTwo { public static void main(String[] args) throws Exception { final CamelContext camelContext = new DefaultCamelContext(); camelContext.start(); camelContext.addRoutes(new RouteBuil
public class SampleTwo {
public static void main(String[] args) throws Exception {
final CamelContext camelContext = new DefaultCamelContext();
camelContext.start();
camelContext.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("file://target/inbox?noop=true&fileName=test.csv").to("direct://start"); //Fails with "No consumers available on endpoint" exception
//from("file://target/inbox?noop=true&fileName=test.csv").to("file://target/outbox"); //Works
}
});
Thread.sleep(1000*6000);
// stop the CamelContext
// camelContext.stop();
}}
我得到一个例外“端点上没有可用的消费者”。这是一个简单的路线&我已经尽了我所能-现在花了超过10个小时:(
请帮助…以下为堆栈跟踪(已启用跟踪)
消息历史记录
--------------------------------------------------------------------------------------------------------------------------------------
RouteId ProcessorId Processor Elapsed (ms)
[route1 ] [route1 ] [file://target/inbox?fileName=test.csv&noop=true ] [ 3]
[route1 ] [to1 ] [direct://start ] [ 0]
交换
---------------------------------------------------------------------------------------------------------------------------------------
Exchange[
Id ID-01HW466539-57567-1431438054047-0-41
ExchangePattern InOnly
Headers {breadcrumbId=ID-01HW466539-57567-1431438054047-0-42, CamelFileAbsolute=false, CamelFileAbsolutePath=C:\folder\eclipse-ws-march\camelsampletwo\target\inbox\test.csv, CamelFileContentType=null, CamelFileLastModified=1431426831841, CamelFileLength=45, CamelFileName=test.csv, CamelFileNameConsumed=test.csv, CamelFileNameOnly=test.csv, CamelFileParent=target\inbox, CamelFilePath=target\inbox\test.csv, CamelFileRelativePath=test.csv, CamelRedelivered=false, CamelRedeliveryCounter=0}
BodyType org.apache.camel.component.file.GenericFile
Body [Body is file based: GenericFile[test.csv]]]
堆栈跟踪
---------------------------------------------------------------------------------------------------------------------------------------
org.apache.camel.component.direct.DirectConsumerNotAvailableException: No consumers available on endpoint: Endpoint[direct://start]. Exchange[test.csv]
默认情况下,<代码>直接< /COD>组件期望每个生产者都有一个匹配的消费者。注意新的配置选项<代码> %FuffNoWudio/Cuff>。在没有用户的情况下,Exchange在路由的末尾无处可去。您可以考虑添加另一条路由:
public class SampleTwo {
public static void main(String[] args) throws Exception {
final CamelContext camelContext = new DefaultCamelContext();
camelContext.start();
camelContext.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("file://target/inbox?noop=true&fileName=test.csv").to("direct://start");
from("direct://start").to("file://target/outbox"); //ADDED
}
});
Thread.sleep(1000*6000);
}}
这个例外
org.apache.camel.component.direct.DirectConsumerNotAvailableException: No consumers available on endpoint: Endpoint[direct://XXXXX
当您忘记启动Camel上下文并创建生产者/消费者模板(如我)时,也会抛出
我花了半天的时间才弄明白:-,所以别忘了
context.start()
为什么要将其传递给direct?如果direct上没有任何消费者?我可以知道用例吗
您甚至可以在from端点之后添加日志端点并终止路由。如果您有多个camelContext,并且您没有提到正确的camelContext id,那么您也会遇到此异常。谢谢Adam:)您是一个救生员……我确实阅读了Camel In action和Camel文档,并遇到了配置选项failIfNoConsumers,但是我没有想到从直接组件开始的路由对于作为消费者来说是必不可少的……感谢您的及时帮助:)。。。检查start是否正确执行非常重要,没有任何例外(是的,这样的事情也可能需要半天)
context.start()