2017-09-14 307 views
0

这是我写从队列解决“无法创建航线ROUTE1在:>>>要[stream.out]”在骆驼

public class Sender { 
    public static void main(String[] args) throws Exception { 
     CamelContext camelContext = new DefaultCamelContext(); 
     camelContext.addRoutes(new RouteBuilder() { 
      @Override 
      public void configure() throws Exception { 
       from("rabbitmq://localhost:5672/tasks?queue=learningqueue").to("stream:out"); 
      } 
     }); 
     camelContext.start(); 
    } 
} 

读消息类但是,当我运行上面的代码我得到以下错误。我已经添加了骆驼流依赖。

Exception in thread "main" org.apache.camel.FailedToCreateRouteException: Failed to create route route1 at: >>> To[stream.out] <<< in route: Route(route1)[[From[rabbitmq://localhost:5672/tasks?queue=le... because of No endpoint could be found for: stream.out, please check your classpath contains the needed Camel component jar. 
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1071) 
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:196) 
    at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:1008) 
    at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:3397) 
    at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3128) 
    at org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:182) 
    at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2957) 
    at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2953) 
    at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2976) 
    at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:2953) 
    at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) 
    at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:2920) 
    at Learndata.camel.exam.sendrecv.Sender.main(Sender.java:16) 
Caused by: org.apache.camel.NoSuchEndpointException: No endpoint could be found for: stream.out, please check your classpath contains the needed Camel component jar. 
    at org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:81) 
    at org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:211) 
    at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:108) 
    at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:114) 
    at org.apache.camel.model.SendDefinition.resolveEndpoint(SendDefinition.java:62) 
    at org.apache.camel.model.SendDefinition.createProcessor(SendDefinition.java:56) 
    at org.apache.camel.model.ProcessorDefinition.makeProcessorImpl(ProcessorDefinition.java:539) 
    at org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:500) 
    at org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:221) 
    at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:1068) 
    ... 12 more 

这是我整个的pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 

    <groupId>camel.activemq</groupId> 
    <artifactId>rabbitmq</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0-SNAPSHOT</version> 

    <name>ActiveMQ embedded with Camel</name> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
    </properties> 

    <dependencyManagement> 
    <dependencies> 
     <!-- Camel BOM --> 
     <dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-parent</artifactId> 
     <version>2.19.2</version> 
     <scope>import</scope> 
     <type>pom</type> 
     </dependency> 
    </dependencies> 
    </dependencyManagement> 

    <dependencies> 
    <dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-rabbitmq</artifactId> 
     <version>2.19.1</version> 
    </dependency> 
    <dependency> 
<!-- https://mvnrepository.com/artifact/org.apache.camel/camel-stream --> 
<dependency> 
    <groupId>org.apache.camel</groupId> 
    <artifactId>camel-stream</artifactId> 
    <version>2.19.1</version> 
</dependency> 

     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-core</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-jms</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-spring</artifactId> 
    </dependency> 

    <!-- the ActiveMQ client with connection pooling --> 
    <dependency> 
     <groupId>org.apache.activemq</groupId> 
     <artifactId>activemq-client</artifactId> 
     <version>5.14.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.activemq</groupId> 
     <artifactId>activemq-camel</artifactId> 
     <version>5.14.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.activemq</groupId> 
     <artifactId>activemq-pool</artifactId> 
     <version>5.14.5</version> 
    </dependency> 

    <!-- the ActiveMQ broker is optional and can be removed if connecting to a remote broker only --> 
    <dependency> 
     <groupId>org.apache.activemq</groupId> 
     <artifactId>activemq-broker</artifactId> 
     <version>5.14.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.activemq</groupId> 
     <artifactId>activemq-spring</artifactId> 
     <version>5.14.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.activemq</groupId> 
     <artifactId>activemq-kahadb-store</artifactId> 
     <version>5.14.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.xbean</groupId> 
     <artifactId>xbean-spring</artifactId> 
     <version>4.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>4.3.10.RELEASE</version> 
    </dependency> 

    <!-- logging --> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-api</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-core</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-slf4j-impl</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-1.2-api</artifactId> 
     <scope>test</scope> 
    </dependency> 

    <!-- testing --> 
    <dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-test-spring</artifactId> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 

    <build> 
    <defaultGoal>install</defaultGoal> 

    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.6.1</version> 
     <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
     </configuration> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-resources-plugin</artifactId> 
     <version>3.0.2</version> 
     <configuration> 
      <encoding>UTF-8</encoding> 
     </configuration> 
     </plugin> 

     <!-- allows the route to be ran via 'mvn camel:run' --> 
     <plugin> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-maven-plugin</artifactId> 
     <version>2.19.2</version> 
     </plugin> 
    </plugins> 
    </build> 

</project> 

因为我必须使用ActiveMQ的骆驼我已经把这些依赖也。这可能是它不能正常工作的原因吗?

+0

嗯...你添加了骆驼流组件添加到您POM? –

+0

是的,我已经在pom中包含了骆驼流依赖。 – NitKrish

+0

也是流:out,stream.out。 –

回答

0

我不知道是什么原因造成了错误。我通过在xml文件的帮助下创建路径来解决问题。 这里是我做了什么:

Bean类:

ConfigurableApplicationContext springContext = new FileSystemXmlApplicationContext("/Data/maven/Spring-Module.xml"); 
CamelContext rabbitMQContext = SpringCamelContext.springCamelContext(springContext, false); 
rabbitMQContext.start(); 

弹簧Module.xml:

<camelContext xmlns="http://camel.apache.org/schema/spring"> 
    <route> 
      <from uri="rabbitmq://localhost:5672/tasks?queue=learningqueue"> 
      <to uri="stream:out"/> 
     </route> 
</camelContext> 
相关问题