2011-04-20 3 views
0

ActiveMQ 주제를 청취 할 응용 프로그램을 설정했습니다. 여기에 내가 그것을 구성한 방법 :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 분 후에 다시 시도하고 롤백합니다.

사분 나중에 ... 등

그것은 첫 번째 메시지에 걸리면과 첫 번째가 처리 될 때까지 다음 9 메시지를 읽을되지 않습니다.

주제가 작동하는 방식입니까? 첫 번째 메시지가 재 시도되기를 기다리는 동안 9 개의 다른 메시지를 읽을 수있는 방법이 있습니까?

답변

2

트랜잭션 메시지 처리의 본질은 트랜잭션 처리 메시지 처리의 본질과 같습니다. 첫 번째 메시지가 완료되거나 지정된 재 전달 정책의 규칙에 따라 삭제 될 때까지 다른 메시지를 처리 ​​할 수 ​​없습니다.

JMS 튜토리얼을 읽고 싶을 수도 있습니다. here :

관련 문제