0
我正在使用DMLC來偵聽Tibco EMS隊列(Tomcat)。過了一段時間,消息沒有被傳送。重新啓動後,消息再次傳遞。我正在使用SingleConnectionFactory。SpringJMS DMLC消息直到重新啓動纔會被拾取
Connection Factory:
<bean id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate" ref="jndiTemplate" />
<property name="jndiName" value="${connectionQueueFactory}" />
<property name="cache" value="false"/>
<property name="lookupOnStartup" value="false"/>
<property name="proxyInterface" value="javax.jms.ConnectionFactory"/>
</bean>
Authenticated Connection Factory:
<bean id="authenticationConnectionFactory"
class="com.my.service.AuthenticationConnectionFactory"> <-- extends SingleConnectionFactory
<property name="targetConnectionFactory" ref="jmsConnectionFactory" />
<property name="username" value="${userName}" />
<property name="password" value="${password}" />
<property name="sessionCacheSize" value="1"/>
</bean>
Destination Resolver:
<bean id="destinationResolver" class="org.springframework.jms.support.destination.JndiDestinationResolver">
<property name="jndiTemplate" ref="jndiTemplate" />
<property name="cache" value="true"/>
</bean>
Container:
<jms:listener-container concurrency="10-15" container-type="default"
connection-factory="simpleAuthenticationConnectionFactory"
destination-type="queue"
cache="consumer"
prefetch="1"
destination-resolver="destinationResolver"
acknowledge="transacted">
..... listeners.....
</jms:listener-container>
謝謝。
湯姆,謝謝你的回答。但是,我不會在我的聽衆中拋出異常。我捕獲異常,並根據異常類型,提交會話或回滾(使用會話感知消息監聽器)。 – user4054431 2014-10-05 06:49:04
嘗試偵聽$ sys.monitor消息以查看EMS守護進程認爲正在發生的事情。要麼它沒有收到確認,要麼會話沒有正確回滾。 – 2014-10-06 11:23:41