gpt4 book ai didi

ibm-mq - WebSphere MQ 和 Atomikos - 进程终止时丢失的消息

转载 作者:行者123 更新时间:2023-12-01 01:15:13 28 4
gpt4 key购买 nike

我的应用程序( Spring 消息监听器)从队列中读取并在单个事务中写入数据库。我使用 Atomikos 来提供 XA 事务行为。例如,当应用程序突然使用 kill 语句终止时,我看到消息丢失了。我需要使用任何特定的配置吗?队列应该是持久的吗?目前,队列是非持久的。我的 MQ 版本是 v7.1。

监听器容器的 Spring 配置如下所示:

<bean id="listenerContainer" class="com.miax.test.TestListenerMDPImpl" autowire="byName">
<property name="connectionFactory" ref="mqConnFactory" />
<property name="destinationName" value="QUEUE" />
<property name="messageListener" ref="listenerAdapter" />
<property name="transactionManager" ref="jtaTransactionManager" />
<property name="sessionTransacted" value="true" />
<property name="concurrentConsumers" value="1" />
<!-- receive time out, should be less than tranaction time out -->
<property name="receiveTimeout" value="3000" />
<!-- retry connection every 1 seconds -->
<property name="recoveryInterval" value="1000" />
<property name="autoStartup" value="true" />
<property name="sessionAcknowledgeMode" value="0" />
</bean>

任何其他信息将根据需要提供。

谢谢。

最佳答案

如果在今年 5 月之前下载,您使用的客户端必须是扩展交易客户端。截至 2012 年 5 月,任何 V7.0.1 和更高版本的客户端都内置了 XA 功能。如果有疑问,请下载 WMQ 客户端的当前版本并安装。

其次,XA 事务管理器必须有它自己的与独立于应用程序的队列管理器的连接。这样,如果应用程序无法重新启动,它就可以连接和协调事务。为此,必须使用 XX_OPEN 字符串和开关文件配置事务管理器,如信息中心主题 Configuring XA-compliant transaction managers 中所述。 .

就其值(value)而言,WMQ 中没有持久队列这样的东西。消息本身是持久的(或不是)。有关更多信息,请参阅 my blog post on the topic .这是一个相当重要的话题,因为当人们假设队列本身是持久的时,他们往往会设计出产生意外结果的解决方案。请阅读博文!

关于ibm-mq - WebSphere MQ 和 Atomikos - 进程终止时丢失的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12461572/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com