我在我的應用程序中使用了2個資源jms和數據庫。我配置如下,我正在做一個簡單的測試,以便檢查系統中的中斷。可以彈簧事務管理器能夠管理2件事務嗎?
- 在數據庫中插入uuid。
- 將uuid作爲消息發送到jms隊列。
- 在遠程監聽器上收聽消息。
- 檢查uuid是否存在於數據庫中?
這是完全正常的代碼:https://github.com/ameyjadiye/mq-fury
這樣,我只是想確保數據總是出現在數據庫中時,遠程監聽器檢查它在分貝。
我在系統上運行1k條消息,並且所有工作都正常,截至目前,有沒有可能檢查可能會失敗?我不是明確地管理db事務,我需要在這裏做更多的設置嗎?
<bean id = "messageListenerContainer2" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="destinationName" value="real_queue"/>
<property name="messageListener" ref="jmsMessageListener2"/>
<property name="cacheLevel" value="1"/>
<property name="concurrency" value="5-5" />
<property name="sessionTransacted" value="true"/>
<property name="transactionManager" ref="jmsTransactionManager"/>
</bean>
<bean id="jmsTransactionManager" class="org.springframework.jms.connection.JmsTransactionManager">
<property name="connectionFactory" ref="connectionFactory" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg ref="dataSource"/>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://192.168.0.102:3306/test" />
<property name="username" value="root" />
<property name="password" value="r00T" />
</bean>
這是春天的一個獨立的應用程序,試圖與ChainedTrnsactionManager但它使系統慢
您需要配置'JTATransactionManager'才能使用2PC。也許這就是缺少的東西? – Augusto
確實需要關於配置的更多信息嗎? –