2014-11-21 86 views
0

我使用Spring集成(3.0.6),並使用message-driven-channel-adapter同時有問題。如果我將2個作業發送到JMS隊列並確保第一個作業永遠不會結束(保持循環),那麼第二個作業永遠不會從隊列中取出。Spring集成併發JMS適配器

如果我從通道適配器刪除transaction-manager我得到我所期望的併發性。有人看到我配置這個的方式有什麼問題嗎?

<int-jms:message-driven-channel-adapter 
    channel="jobsChannel" 
    connection-factory="jmsConnectionFactory" 
    pub-sub-domain="false" 
    destination-name="JOBS_QUEUE" 
    transaction-manager="jmsTxManager" 
    concurrent-consumers="5" 
    max-messages-per-task="1" 
    error-channel="errorChannel" 
    id="jobJmsReceiver" /> 

<amq:broker useJmx="false" persistent="true"> 
    <amq:transportConnectors> 
     <amq:transportConnector uri="tcp://localhost:0" /> 
    </amq:transportConnectors> 
</amq:broker> 

<bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> 
    <property name="brokerURL" value="vm://localhost" /> 
</bean> 

<bean id="jmsTxManager" class="org.springframework.jms.connection.JmsTransactionManager"> 
    <property name="connectionFactory" ref="jmsConnectionFactory"></property> 
</bean> 

回答

0

我不得不看到調試日誌,但你真的不需要一個事務管理器,設置acknowledge="transacted"和容器將使用會話本地事務。

同步時,可(例如,用一個JDBC TM)或在應用服務器使用JTA事務管理器時,您通常只需要一個外部的事務管理器。

+0

謝謝,這符合我的使用情況,並行工作 – mnik 2014-11-21 16:19:44

相關問題