【问题标题】:No consumers available on endpoint: Endpoint[direct://LookUpRoute]端点上没有可用的消费者:Endpoint[direct://LookUpRoute]
【发布时间】:2019-09-28 15:45:55
【问题描述】:

我是骆驼新手。我正在尝试将交换从 java 方法发送到路由,但它给了我“原因:org.apache.camel.component.direct.DirectConsumerNotAvailableException:端点上没有可用的消费者”错误。我想了解这个错误到底是什么,我们什么时候得到这个?

@EndpointInject(uri = "direct:reportRoute")
private ProducerTemplate templatereportRoute;


public void saveDataFromExchange(Map<String, Object> DataMap){

    List<Map<String, Object>> paramList = new ArrayList<Map<String, Object>>();

    List<Map<String, Object>> rows = templatereportRoute.requestBody("direct:reportReport", DataMap, List.class);

<from uri="direct:reportRoute"/>

 <log message="  - ${body}"  loggingLevel="INFO"/>    

<setProperty propertyName="DataMap">
  <simple>${body}</simple>
</setProperty>

【问题讨论】:

  • 您正在发送到一个名为“direct:createReport”的端点,但您没有在 xml 文档中声明一个端点。 xml 中的端点是direct:reportRoute。 direct:reportRoute != direct:createReport
  • 抱歉,这里实际上输入错误,但我将其发送到 List> rows = templatereportRoute.requestBody("direct:reportRoute", DataMap, List.class);
  • 你如何运行这个?听起来XML没有被使用,只有Java。您需要提供更多详细信息。因为 XML 部分应该在发送消息的 Java 代码之前由 Camel 使用和启动。

标签: apache apache-camel blueprint-osgi spring-camel


【解决方案1】:

您遇到的错误意味着您正在发送到 Camel 上下文中不存在的直接端点。

由于您发布了定义相关路线的 XML 片段,因此存在两个可能的问题(@claus-ibsen 已经评论过):

  • 您发布的 XML 未使用。您正在启动 Camel 上下文,但它不使用您的 XML 代码。你用的是弹簧吗?然后你可以define your Camel routes in Spring XML
  • 您的设置很好,但您的 Java 代码发送消息过早,即在直接端点启动并运行之前。您可以将此代码放在 Test 类中,并在 Camel 上下文启动并准备好后运行它。

【讨论】:

    猜你喜欢
    • 2014-11-11
    • 2014-08-07
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多