TIBCO ESB实战系列:交易完整性实例

本文介绍了在TIBCO ESB中处理JMS消息时如何避免数据丢失,通过调整流程确保交易完整性。文章讨论了自动确认模式导致的数据丢失问题,提出使用ClientAcknowledge模式并添加Confirm Activity来改善。同时,通过引入Checkpoint减少重复数据的风险,并探讨了在生产环境中使用Transaction的重要性。最后,作者提及了分布式事务插件XA Transaction Manager在确保业务系统可靠性中的作用。
摘要由CSDN通过智能技术生成

前些日子,以前组里的同事参加一个POC测试,测试中有一个异常测试用例,就是在测试程序运行的时候,将流程kill掉来模仿系统宕机的情况,然后将流程重新启动,最后检查是否有数据丢失。这个测试用例出现了问题,最后检查数据,总共有几十万条数据,大约丢失了十几条。同事将他们的做流程发给我,让我帮忙看一下,流程大致如下:


BW流程从JMSQueue上接收消息,将消息进行处理后发送到另一个Queue中。流程中的JMS Queue ReceiverAcknowledge ModeAuto。从这个流程中,不难判断出,出现数据丢失的原因是当killBW流程的进程的时候,流程已经从JMS服务器上取到消息,但是整个流程还没有运行结束。因为JMS Queue Receiver使用了Auto Acknowledge方式,在Receiver接收到JMS消息的时候就会将消息从JMS ServerConfirm掉。如果这时流程被kill掉,JMS已经被Confirm掉,但是数据还没有处理完,这条数据就丢失了。

要解决这个问题,就要保证流程在运行完成之前,不要将消息数据从JMS服务器上Confirm掉,这样在流程重新启动的时候,就可以重新处理这个数据了。流程修改如下:

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值