限制Spring JMS中并发队列的执行

时间:2014-08-19 09:16:48

标签: spring spring-jms

理想情况下,在一个队列完成其执行后,应该启动另一个队列。 我正在使用Spring JMS。但是,一次可以执行多个队列,从而发生数据不匹配。 所以任何人都可以告诉如何限制并发队列或除非第一个队列结束第二个队列无法启动或所有其他队列都在等待。

public class MyQueueListener implements MessageListener {

public void onMessage(Message message) {
    try {

        if (message instanceof ObjectMessage) {
            ObjectMessage objectMessage = (ObjectMessage) message;
            MyQueueObject obj= (MyQueueObject)objectMessage.getObject();
            String productId = obj.getProductId();
            IMyService myService;
            myService.updateAllCustomerDetails(productId);
        }

    } catch (JMSException j) {
        j.printStackTrace();
    } catch(Exception e) {
        e.printStackTrace();
    }
}   


}




<bean id="mySenderService" class="MySenderService">
<property name="jmsTemplate" ref="myjmsTemplate" />
<property name="queue" ref="myQueueDestination" />  
</bean>
<bean id="myQueueDestination" class="org.springframework.jndi.JndiObjectFactoryBean"> 
<property name="jndiName">
<value>queue/myQueue</value>
</property> 
<property name="resourceRef">
<value>true</value>
</property> 
</bean>
<bean id="myQueueListener" class="MyQueueListener" ></bean> 

<bean id="jmsImportContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" />
<property name="destination" ref="myQueueDestination" />
<property name="messageListener" ref="myQueueListener" /> 
</bean>


mySenderService.sendMessages();

0 个答案:

没有答案