Reputation: 1690
I am writing a simple example in Camel for Rabbit MQ using Java DSL.
CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
public void configure() {
from("rabbitmq://localhost?exchange=logs&exchangeType=fanout")
.to("stream:out");
}
});
context.start();
This example should read the messages and print them.
But I am getting following error:
Exception in thread "main" org.apache.camel.FailedToCreateRouteException: Failed to create route route1: Route(route1)[[From[rabbitmq://localhost?exchange=logs&excha... because of Failed to resolve endpoint: rabbitmq://localhost?exchange=logs&exchangeType=fanout due to: String index out of range: -1
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:180)
at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:778)
at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:2041)
at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1791)
at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1665)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1633)
at com.test.app.App.initCamelContext(App.java:29)
at com.test.app.App.main(App.java:15)
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: rabbitmq://localhost?exchange=logs&exchangeType=fanout due to: String index out of range: -1
at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:532)
at org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:71)
at org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:190)
at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:106)
at org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:112)
at org.apache.camel.model.FromDefinition.resolveEndpoint(FromDefinition.java:72)
at org.apache.camel.impl.DefaultRouteContext.getEndpoint(DefaultRouteContext.java:88)
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:888)
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:175)
... 8 more
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1937)
at java.lang.String.substring(String.java:1904)
at org.apache.camel.component.rabbitmq.RabbitMQComponent.createEndpoint(RabbitMQComponent.java:45)
at org.apache.camel.component.rabbitmq.RabbitMQComponent.createEndpoint(RabbitMQComponent.java:27)
at org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:123)
at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:512)
... 16 more
Following is my pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>2.13.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring</artifactId>
<version>2.13.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-rabbitmq</artifactId>
<version>2.13.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-stream</artifactId>
<version>2.13.0</version>
</dependency>
Can somebody please help me in figuring out the missing part?
Upvotes: 1
Views: 3156
Reputation: 3291
The ExchangeName is not a option, it's part of URI path. I will update the RabbitMQComponent code throw more meaningful exception for it.
Upvotes: 0
Reputation: 4847
wonhee's suggestion should fix your problem. Here's the explanation:
According to RabbitMQ Component documentation the correct URL format is:
rabbitmq://hostname[:port]/exchangeName?[options]
There's no exchange
option, but rather the exchange name is directly part of the path.
Upvotes: 0
Reputation: 1661
Probably you need to try something like
rabbitmq://localhost/logs?exchangeType=fanout
Upvotes: 1