端点上没有可用的消费者:Endpoint[direct://LookUpRoute]

sss*_*992 8 apache-camel blueprint-osgi spring-camel

我是阿帕奇骆驼的新手。我正在尝试将交换从 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);
Run Code Online (Sandbox Code Playgroud)
<from uri="direct:reportRoute"/>

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

<setProperty propertyName="DataMap">
  <simple>${body}</simple>
</setProperty>
Run Code Online (Sandbox Code Playgroud)

bur*_*rki 3

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

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

  • 您发布的XML未被使用。您正在启动 Camel 上下文,但它不使用您的 XML 代码。你用的是Spring吗?然后你可以在 Spring XML 中定义你的 Camel 路由
  • 您的设置很好,但您的 Java 代码太早发送消息,即在直接端点启动并运行之前。您可以将此代码放入 Test 类中,并在 Camel 上下文启动并准备就绪后运行它。