I tried this, but I get a failure on my Mock. Let me try to step through what I have working:
1. I start up a camel server via mvn camel:run 2. The camel server starts the following route: * @Override public void configure() throws Exception { // add tracer as an interceptor so it will log the exchange executions at runtime // this can aid us to understand/see how the exchanges is routed etc. getContext().addInterceptStrategy(new Tracer()); from("jms:queue:bets").process(new PlaceBet()); from("seda:pushStatusUpdate") .process(new VirtualTopicAuditor()) .to(TableServiceImpl.VIRTUAL_TOPIC); } * 3. In another command prompt, I start my unit test which starts another client camel context like this: *<!-- Create a client Camel Context -->* * <camel:camelContext id="camel">* * <camel:packageScan>* * <camel:package>com.wiredducks.service.routes.test</camel:package>* * <camel:excludes>**.*Excluded*</camel:excludes>* * <camel:includes>**.*</camel:includes>* * </camel:packageScan>* * <!-- Create a Consumer so we can consume messages -->* * <camel:consumerTemplate id="consumer" />* * </camel:camelContext>* * <!-- Create a Producer so we can send messages -->* * <camel:template id="producer" />* * <bean id="jms" class="org.apache.activemq.camel.component.ActiveMQComponent">* * <property name="brokerURL" value="tcp://localhost:61616" />* * </bean>* * <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">* * <property name="brokerURL" value="tcp://localhost:61616" />* * </bean>* * <bean id="transactionManager"* * class="org.springframework.jms.connection.JmsTransactionManager">* * <property name="connectionFactory" ref="connectionFactory" />* * </bean>* * <import resource="clients/test-client1.xml" />* ....* <import resource="clients/test-client11.xml" />* *</beans>* 4. Each client MDP is created and just prints out the message received by onMessage() *<bean id="test-client1" class="com.wiredducks.service.impl.StatusUpdateService"> <property name="name" value="test-client1" /> <property name="seat" value="1" /> </bean> <jms:listener-container transaction-manager="transactionManager" > <jms:listener destination="Consumer.1.VirtualTopic.TEST" ref="test-client1" method="onMessage" /> </jms:listener-container> * 5. My unit tests just forces a message to be sent by calling a sendStatusUpdate message from the camel server: *...@autowired* * protected SpringCamelContext camel;* * @EndpointInject(uri = "mock://resultClient1")* * protected MockEndpoint resultClient1;* * * * @Produce(uri = "direct:start")* * protected ProducerTemplate producerTemplate;* * @Test* * public void testSendBetMessage() throws Exception {** * * * * //MockEndpoint resultClient1 = camel.getEndpoint("mock://resultClient1", MockEndpoint.class);*** * * * resultClient1.expectedMessageCount(1);* * // Send the test message to make Server Service create our Status Message* * producerTemplate.sendBody("xxyyzz");* * * * // now lets assert that the mock endpoint received messages* * //resultClient1.assertIsSatisfied();** * * }* 6. The server sends a status update message: *public boolean sendStatusUpdate(String body) {** ** * * Map<String, Object> gameState = new HashMap<String, Object>();* * gameState.put("tableId", "123");* * gameState.put("player1", "raise");* * //Send message to * * producer.sendBodyAndHeader("seda:pushStatusUpdate", gameState, "tableId", "123");* * return true;* * }* 7. Each of the clients that where setup in the camel client will get the message just fine. I have tested this with 10 clients now. *** In the next email, I will elaborate on the change you suggested. ******NOTE: I commented out *//resultClient1.assertIsSatisfied();* in order to get the original test to work. --- Thank You… Mick Knutson, President BASE Logic, Inc. Enterprise Architecture, Design, Mentoring & Agile Consulting p. (866) BLiNC-411: (254-6241-1) f. (415) 685-4233 Website: http://baselogic.com Linked IN: http://linkedin.com/in/mickknutson Vacation Rental: http://tahoe.baselogic.com --- On Mon, Aug 17, 2009 at 7:34 AM, Willem Jiang <willem.ji...@gmail.com>wrote: > If you want to use Mock endpoint to validate the message, you just need to > create the route rule like this > > from("CosumerA.Virtual.Topic").to("mock:endpoint"); > > You don't need to create the MDP yourself. > > Willem > > > Mick Knutson wrote: > >> I finally got a working JUnit test that creates a MDP, subscribes to a AMQ >> Virtual Topic, and receives a message. But now that the MDP gets the >> message >> I am having an issue validating that message. >> >> How can I re-route this message to a MOCK just for testing purposes? >> >> --- >> Thank You… >> >> Mick Knutson, President >> >> BASE Logic, Inc. >> Enterprise Architecture, Design, Mentoring & Agile Consulting >> p. (866) BLiNC-411: (254-6241-1) >> f. (415) 685-4233 >> >> Website: http://baselogic.com >> Linked IN: http://linkedin.com/in/mickknutson >> Vacation Rental: http://tahoe.baselogic.com >> --- >> >> >