Hi all
I have just started learning camel and JMS and ActiveMQ, and i am stuck
trying to get camel to read messages off ActiveMQ
which version of the software?
camel version 2.0.0
what platform and JDK?
os x 10.5.8 JDK 1.5.x
If i connect to ActiveMQ using jconsole, i can see there are 2000+ messages
there in a queue called MUPPET.QUEUE
Below is my Java JUnit code, the routebuilder, the spring context xml and
part of the pom.
What the junit test does is send a http request to login a user, that
causes my actual application to post a JMS message to MUPPET.QUEUE (yes i do
see the queue growing!)
What I was hoping for is Camel to receive the messages off the queue and
route them to my bean eventbroker which i have already tested with Camel in
a non-JMS way by using
@Produce(uri = "direct:start")
protected ProducerTemplate template;
which worked fine and allowed me to learn routing, endpoints, etc
My eventbroker bean isnt receiving anything! OK I daresay I am missing
something fundamental about JMS and/or activemq/camel configuration, but I
am stumped...
Do i need to declare a connection factory in my spring xml? or is the
information i have given camel sufficient for it to start taking messages
off the queue?
All help gratefully accepted! Any ideas?
Cheers,
Gareth
@ContextConfiguration
public class MyTest extends AbstractJUnit4SpringContextTests {
...
....
private static class MyListener implements EventListener {
private int messagesReceived;
public void notify(String target, Event event) {
System.out.println("***");
messagesReceived++;
}
}
@Test
public void testJms() throws Exception {
System.out.println("START TEST");
SimpleEventBroker eventbroker = (SimpleEventBroker)
applicationContext.getBean("eventbroker");
MyListener eventListener = new MyListener();
eventbroker.getListeners().add(eventListener);
System.out.println("LOGIN...");
for (int i = 0; i < 10; i++) {
loginValidUser();
}
System.out.println("OK LOGGED IN");
pause(2);
assertTrue("FAIL: NO MESSAGE RECEIVED",
eventListener.messagesReceived == 1);
}
}
My route builder...
public class MyTestRoutes extends RouteBuilder {
@Override
public void configure() {
from("activemq:MUPPET.QUEUE").to("bean:eventbroker?method=writeToFile");
}
}
MyTest-context.xml (spring context config)...
<?xml version="1.0" encoding="UTF-8"?>
<!-- Configures the Camel Context-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:amq="http://activemq.apache.org/schema/core"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd
http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core.xsd">
<bean id="activemq"
class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="brokerURL" value="tcp://localhost:61616" />
</bean>
<bean id="eventbroker"
class="test.com.firstclarity.eventbroker.SimpleEventBroker"/>
<camelContext xmlns="http://camel.apache.org/schema/spring">
<package>test.com.firstclarity.eventbroker</package>
</camelContext>
</beans>
My maven pom
<project>
...
<properties>
<camel-version>2.0.0</camel-version>
<activemq-version>5.2.0</activemq-version>
<xbean-spring-version>3.5</xbean-spring-version>
<log4j-version>1.2.14</log4j-version>
</properties>
<dependencies>
...
...
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>2.5.6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>opensymphony</groupId>
<artifactId>quartz-all</artifactId>
<version>1.6.3</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
<version>${activemq-version}</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-camel</artifactId>
<version>${activemq-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-stream</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jms</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.xbean</groupId>
<artifactId>xbean-spring</artifactId>
<version>${xbean-spring-version}</version>
</dependency>
...
...
</dependencies>
...
</project>
--
View this message in context:
http://www.nabble.com/newbie-trying-to-get-messages-off-activemq-and-route-them-using-camel-tp25385346p25385346.html
Sent from the Camel - Users mailing list archive at Nabble.com.