【发布时间】:2015-10-18 19:18:56
【问题描述】:
我在我的应用程序 jms 和 database 中使用了 2 个资源。我已经像下面这样配置了,我正在下面做一个简单的测试,以检查系统的中断。
- 在 DB 中插入 uuid。
- 将 uuid 作为消息发送到 jms 队列。
- 在远程监听器上监听消息。
- 检查 uuid 是否存在于 DB 中?
这是完整的工作代码:https://github.com/ameyjadiye/mq-fury
这样我只是想确保当远程侦听器在数据库中检查数据时,数据始终存在于数据库中。
我正在系统上运行 1k 条消息,到目前为止一切正常,是否有可能检查失败?我没有明确管理数据库事务,我需要在这里做更多设置吗?
<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。也许这就是缺少的东西? -
问题是否需要有关我所做的配置的更多信息?
标签: java spring transactions spring-transactions spring-jms