当前位置: 首页 > 知识库问答 >
问题:

Camel直接终点异常

章安易
2023-03-14

我有个简单的问题。我不能从文件endpoint读到直接endpoint。下面是代码片段:

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();
}}

我得到一个异常“endpoint上没有可用的消费者”。这是一个简单的路线&我已经尽我所能了--现在花了超过10个小时:(

[hread #0 - file://target/inbox] EventHelper
TRACE Notifier: org.apache.camel.impl.DefaultRuntimeEndpointRegistry@99e74a is not enabled for the event: ID-01HW466539-57567-1431438054047-0-41 exchange failure: Exchange[test.csv] 
cause 
org.apache.camel.component.direct.DirectConsumerNotAvailableException: No consumers available on endpoint: Endpoint[direct://start]. Exchange[test.csv]
[hread #0 - file://target/inbox] FileConsumer                   
TRACE Done processing file: GenericFile[test.csv] synchronously
[hread #0 - file://target/inbox] DefaultErrorHandler            
ERROR Failed delivery for (MessageId: ID-01HW466539-57567-1431438054047-0-42 on ExchangeId: ID-01HW466539-57567-1431438054047-0-41). Exhausted after delivery attempt: 
1 caught:
org.apache.camel.component.direct.DirectConsumerNotAvailableException: No consumers available on endpoint: Endpoint[direct://start]. Exchange[test.csv]
--------------------------------------------------------------------------------------------------------------------------------------
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]

共有1个答案

吉凯捷
2023-03-14

默认情况下,Direct组件希望每个生产者都有一个匹配的消费者。请注意Camel文档中显示的新配置选项failifnoconsumers。没有消费者,交易所在你路线的尽头无处可去。您可以考虑添加另一条路由,如下所示:

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);
}}
 类似资料:
  • 我想扫描带有子文件夹的文件夹,这是我的配置 我的问题: > 如何扫描Source/Center*(不带子文件夹目标) 如何在源/Center_A Center_A/目标中路由源/中扫描的文件,以及如何在源/Center_B/目标中路由源/Center_B 我的骆驼语境.xml 编辑1: 第一个问题已解决 编辑2: 第二个问题已修复 最后一个问题,移动选项就足够了,我不想使用 这可能吗?

  • 我正在尝试向外部SOAP服务发送SOAP消息。我需要做的是用SOAP消息包装一个xml字符串,并添加一些SOAP头以进行身份验证。现在我正在使用: 这是可行的,但我还需要包括soap头。有效负载模式只发送带有主体的soap信封。我曾尝试使用拦截器注入头,但它被忽略了。 有可能有一个带有有效负载模式的肥皂标题部分吗?如果没有,完成我正在尝试做的事情的最简单方法是什么? 谢谢

  • 我正在使用apache camel,希望有多条路由。路线如下。

  • 我使用的是camel version2.13.1和camel-ftp version2.13.1。我正试图通过camel路由连接到sftp服务器。我得到了一些与jCraft Jsch异常相关的错误,如下所示。

  • 我试图使用camel-ftpendpoint(特别是sftp模块)上传一个新生成的CSV文件。 我的路线的相关部分如下: 注意:位于的“文件” 传入/feed.csv 创建成功,骆驼的最后几行输出如下: 但是没有 /home/username/file.csv 在linuxserver上。 注: 当我将 sftp 路由配置为以下任一情况时,我得到相同的结果: 或 我错过了什么?

  • 我可以通过使用以下伪测试启动路由(关键是我可以通过)手动启动路由) 扩展 只是一个标记接口 加载SpringContext和stuft 问题是,我必须设置文件名。我读过一些camel设置header的东西(在文件endpoint期间)。它是一个带有时间戳的通用字符串,如果我不设置文件名-写入的文件将获得这个通用字符串作为文件名。