2008/9/18 James Strachan <[EMAIL PROTECTED]>: > 2008/9/18 slimrednano <[EMAIL PROTECTED]>: >> >> Hi >> >> Thanks for the prompt reply. >> >> I have set the message to be persistence=true in the spring.xml >> (applicationContext) >> >> I am not sure whether the way how I configure the bean is correct? >> >> Here I attached all my configurations for the camel and active mq components >> >> Camel Component Configuration >> >> <camel:camelContext id="camel" >> xmlns="http://activemq.apache.org/camel/schema/spring"> >> <package>sg.sphsearch.adserver.messaging</package> >> <endpoint id="adserver" uri="direct:unmarshalled"/> >> </camel:camelContext> >> >> >> ActiveMQ Component Configuration >> >> <bean id="activemqOut" class="org.apache.camel.component.jms.JmsComponent"> >> <property name="connectionFactory"> >> <bean class="org.apache.activemq.ActiveMQConnectionFactory"> >> <property name="brokerURL" value="${mq.broker.url}"/> >> </bean> >> </property> >> <property name="deliveryPersistent" value="true"/> >> <property name="subscriptionDurable" value="true"/> >> <property name="explicitQosEnabled" value="true"/> >> </bean> >> >> >> The java class for camel routing >> import org.apache.camel.builder.RouteBuilder; >> import org.apache.camel.converter.jaxb.JaxbDataFormat; >> import org.apache.camel.spi.DataFormat; >> >> public class MessageRoutes extends RouteBuilder >> { >> >> DataFormat jaxb = new JaxbDataFormat("xx.xx.xx.messaging.model"); >> >> @Override >> public void configure() throws Exception >> { >> // Incoming routes >> from("activemq:topic:BTMSADSERVER"). >> unmarshal(jaxb). >> to("bean:messageService?methodName=onConsume"); >> >> // Outgoing routes >> from("adserver"). >> marshal(jaxb).convertBodyTo(String.class). >> to("bean:messageService?methodName=logMessage"). >> to("activemqOut:topic:ADSERVER"); >> } >> } >> >> Btw the message producer that I used is message producer from Camel >> >> @EndpointInject(name = "adserver") >> private ProducerTemplate producer; >> >> Or should I use the message producer from jms.MessageProducer? >> >> Anybody encounter this problems previously. > > You should use the Camel producer - it saves you making mistakes using > the rather complex JMS API. Also I'd recommend using the Camel > ActiveMQComponent rather than the JmsComponent as it comes configured > to use JMS pooling efficiently. > > I think your problem is you're not actually sending to a JMS topic, > you are sending to an in memory queue > <endpoint id="adserver" uri="direct:unmarshalled"/> > > try using a URI of activemq:topic:something. > > For more help on using ActiveMQ with Camel see > http://activemq.apache.org/camel/activemq.html
You might wanna try sending directly to an ActiveMQ topic first to check that part of your system is all working first; before doing a complex pipeline etc. -- James ------- http://macstrac.blogspot.com/ Open Source Integration http://open.iona.com
