Jms 如何在ActiveMQ中保存顺序?

Jms 如何在ActiveMQ中保存顺序?,jms,activemq,publish-subscribe,Jms,Activemq,Publish Subscribe,我已经设置了一个应用程序来收听ActiveMQ主题。以下是我配置它的方式: <jms:listener-container connection-factory="jmsFactory" container-type="default" destination-type="durableTopic" client-id="CMY-LISTENER" acknowledge="transacted"> <jms:listener destination="

我已经设置了一个应用程序来收听ActiveMQ主题。以下是我配置它的方式:

<jms:listener-container connection-factory="jmsFactory"
    container-type="default" destination-type="durableTopic" client-id="CMY-LISTENER"
    acknowledge="transacted">
    <jms:listener destination="CMY.UPDATES"
        ref="continuingStudiesCourseUpdateListener" subscription="CMY-LISTENER" />
</jms:listener-container>


<bean id="jmsFactoryDelegate" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="${jmsFactory.brokerURL}" />
    <property name="redeliveryPolicy">
        <bean class="org.apache.activemq.RedeliveryPolicy">
            <property name="maximumRedeliveries" value="10" />
            <property name="initialRedeliveryDelay" value="60000" />
            <property name="redeliveryDelay" value="60000" />
            <property name="useExponentialBackOff" value="true" />
            <property name="backOffMultiplier" value="2" />
        </bean>
    </property>
</bean>

我的问题是:

我在主题中放了10条信息

如果读取了第一条消息,并且应用程序无法处理该任务,它将回滚该消息

1分钟后,它会重试读取第一条消息并对其进行处理。它失败并回滚

2分钟后,它重试并回滚

4分钟后。。。等

它被卡在第一条消息上,接下来的9条消息直到第一条消息被处理后才被读取


这就是一个主题应该起作用的方式吗?有没有一种方法可以让我的9条其他消息在第一条消息等待重试时被读取?

它的工作原理与预期的一样,这就是事务性消息处理的本质。根据给定的重新交付策略中的规则,在第一条消息完成或被丢弃之前,您无法处理其他消息

可能需要阅读JMS教程: