Hi, i had simple jms client inside esb:

connection = ActiveMQConnection.makeConnection(ACTIVEMQURL);
                        connection.start();
                        session = connection.createSession(false, 
Session.AUTO_ACKNOWLEDGE);
                    Destination requestdestination = 
session.createQueue(INQUEUE);
                    javax.jms.MessageProducer producer =
session.createProducer(requestdestination);
                    Destination responseDestination = 
session.createQueue(OUTQUEUE);
                        javax.jms.MessageConsumer consumer =
session.createConsumer(responseDestination);
                        
                        TextMessage requestMessage = 
session.createTextMessage();
                        requestMessage.setText(requestXml);
                        producer.send(requestMessage);
                        
                        TextMessage responseMessage = (TextMessage) 
consumer.receive();
                        results = responseMessage.getText();

and this was working, but not efficient. I change this to JmsTemplate
configured in spring but now i receive inproperly correlated messages
(responses for different requests). Please find what is wrong in code:

<bean id="jmsFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
                <property name="brokerURL" value="tcp://localhost:61616" />
        </bean>

        <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
                <property name="connectionFactory">
                        <!-- lets wrap in a pool to avoid creating a connection 
per send -->
                        <bean 
class="org.springframework.jms.connection.SingleConnectionFactory">
                                <property name="targetConnectionFactory" 
ref="jmsFactory" />
                        </bean>
                </property>
                <property name="receiveTimeout" value="15000"/>
        </bean>

        <bean id="messageProducer"
class="de.comvel.booking.jms.client.MessageProducer">
                <property name="template" ref="jmsTemplate" />
                <property name="destination" value="inClientQueue" />
        </bean>

        <bean id="messageConsumer"
class="de.comvel.booking.jms.client.MessageConsumer">
                <property name="template" ref="jmsTemplate" />
                <property name="destination" value="outClientQueue" />
        </bean>

Best regards,
Tomasz Prus

Reply via email to