TIBCO BusinessWorks实战系列:交易完整性实例 收藏
<script type="text/javascript"></script><script type="text/javascript"></script> <!--[if !vml]--><!--[endif]-->
该BW流程从JMS的Queue上接收消息,将消息进行处理后发送到另一个Queue中。流程中的JMS Queue Receiver的Acknowledge Mode是Auto。从这个流程中,不难判断出,出现数据丢失的原因是当kill掉BW 流程的进程的时候,流程已经从JMS服务器上取到消息,但是整个流程还没有运行结束。因为JMS Queue Receiver使用了Auto Acknowledge方式,在Receiver接收到JMS消息的时候就会将消息从JMS Server中Confirm掉。如果这时流程被kill掉,JMS已经被Confirm掉,但是数据还没有处理完,这条数据就丢失了。
要解决这个问题,就要保证流程在运行完成之前,不要将消息数据从JMS服务器上Confirm掉,这样在流程重新启动的时候,就可以重新处理这个数据了。流程修改如下:
<!--[if !vml]--><!--[endif]-->
在这个流程中JMS Queue Receiver使用Client Acknowledge Mode,并且在添加了Confirm Activity。这样只有当流程运行到Confirm的时候才会将消息从JMS Server上Confirm掉。如果流程在运行的过程中中断,没有Confirm的消息还在JMS服务器上,流程下次重新启动的时候,还会再次处理这个数据。
但是这样还是会有问题,流程中有一个JMS Queue Sender,需要将处理后的数据发送到另一个Queue上去。如果按照上面图中的流程进行设置,JMS Queue Sender可能会被重复调用,比如了流程中断的时候,正好是在Sender之后,Confirm之前,这样数据是不会丢失了,但是最后的结果可能是数据多了,因为有数据被Queue Sender重复发送了。流程还需要再改进一下。
<!--[if !vml]--><!--[endif]-->
在这个流程中,将Confirm提到了JMS Queue Sender前面,并且在Confirm和Queue Sender之间添加了Checkpoint。Checkpoint可以存储当前流程的数据和状态,通过这些数据和状态,可以对运行失败的流程进行恢复。恢复操作是从流程中断前的最后一个Checkpoint开始执行的。我们看一下这个流程,如果流程是在Confirm之前中断的,那流程在下次启动的时候就会重新处理这个消息,因为没有运行到Sender,所以就不会有重复消息。如果流程是在Checkpoint之后中断的,那么在下次启动的时候,就会从Checkpoint开始运行将消息通过Sender发送出去,也保证了数据不会丢失。当然了,这个流程也不完美,如果中断发生在Confirm和Checkpoint之间,那这个数据可能就丢失了。也许你会说这样不就和前面那个流程一样了?上一个流程在Queue Sender和Confirm之间中断的话,会出现重复数据;这个流程在Confirm和Checkpoint之间中断会丢失数据,而且从流程上看,发生这种情况的概率是差不多的,貌似没有什么改进。其实在我们测试的过程中,发现JMS Queue Sender的耗时比其他的Activity多几倍甚至多一个数量级,所以这个流程出问题的可能性比前面一个流程要小很多,所以目前这个流程比前一个要可靠很多。即便是真的发生了数据丢失,那几十万条数据丢失一两条,这样的POC结果用户也是可以接受的,而且这个流程也有性能的保证。
如果是用户的生产环境,我们要保证业务的万无一失那怎么办呢。最保险的办法就是使用Transaction了。我们修改流程如下:
<!--[if !vml]--><!--[endif]-->
将Confirm和JMS Queue Sender放到一个事务中,只有两个都成功才会起将消息从JMS Server上Confirm掉并把处理后的消息发送出去。这样不论流程在何时中断,都不会出现数据的丢失和重复。但是使用Transaction的时候性能通常会比不使用Transaction差一些。这个需要根据客户的实际业务场景进行使用。
这里也只是个简单的例子,真正的客户业务环境要复杂的多,需要灵活的使用和搭配这些确保交易完整性的技术,确保业务系统的可靠性。
分享到:
相关推荐
Apache Maven和TIBCO ActiveMatrix BusinessWorks:trade_mark:和TIBCO BusinessWorks:trade_mark:容器版的插件代码 此插件受作为存储库一部分共享的许可证的约束。 在使用或下载此插件之前,请先检查许可证。 它...
TIBCO ActiveMatrix BusinessWorks 5 Exam(TB0-123)认证考试题库
- **平台兼容性**:虽然TIBCO BusinessWorks支持多种操作系统,但不同版本的软件在特定操作系统上的可用性可能不同。建议查看readme.txt文件以了解特定操作系统平台的兼容性信息。 #### 五、商标与版权信息 - **...
根据提供的文件信息,我们可以归纳出一系列与TIBCO BusinessWorks™相关的知识点,这些知识点主要集中在软件版本、使用许可、功能特性以及技术文档等方面。 ### TIBCO BusinessWorks™概述 - **版本信息**:该文档...
1. **Tibco BusinessWorks**:作为Tibco的核心产品之一,BusinessWorks是一款强大的企业服务总线(ESB),它支持快速开发和部署集成解决方案。文档将详细介绍如何设计和构建流程,使用数据映射,以及与其他系统(如...
1. **Tibco ActiveMatrix BusinessWorks**:这是Tibco的核心集成工具,用于构建、部署和管理业务流程。它支持SOA(面向服务的架构)和微服务,允许开发者将复杂业务逻辑分解为可重用的服务单元,提高代码的可维护性...
ant-tibco项目提供了一个ant扩展,以支持Tibco BusinessWorks部署自动化。 该库封装了Tibco TRA中提供的BuildEar和AppManage工具。 它允许您使用事实上的标准工具ant来自动化部署
TIBCO BusinessWorks 6压缩插件,用于Zip,GZ和Tar活动 该插件通过Zip,Unzip,GZ deflate,GZ膨胀,tar和untar活动向BW6添加了一个“压缩”面板。 它是在BW6.2.1 HF3上创建并测试的 参考文档位于: : 要从...
C# 使用TIBCO中间件通信:发送、接收
TIBCO通过其强大的工具集,如TIBCO ActiveMatrix BusinessWorks、TIBCO BW6、TIBCO EMS(Enterprise Message Service)等,提供了一种高效、灵活的集成解决方案。 HTML版的帮助文档通常包含了丰富的教程、示例和...
Tibco Designer支持多种技术栈,如EMS(Enterprise Message Service)、BW(BusinessWorks)以及HAWK(High Availability and Widely Extensible Kernel),这些组件共同构成了Tibco的强大功能。 1. **Tibco EMS**:...
BW-TEST是一个开放源代码库,旨在通过提供在TIBCO Designer中开发测试的直观方法,使您的BusinessWorks项目为连续集成过程做好准备。 它使您可以在TIBCO BusinessWorks中练习TDD,并可以在诸如Jenkins的CI服务器上...
BusinessWorks是TIBCO的核心产品之一,它是一个强大的企业级集成平台,允许开发者创建、部署和管理复杂的业务流程。Process Developer是BusinessWorks的配套工具,用于设计和开发流程。通过此手册,学习者可以学习...
TIBCO ActiveMatrix BusinessWorks 是其中的代表,它是一个可视化的工作流设计工具,允许开发者无需编写代码就能创建复杂的业务流程。ActiveMatrix BusinessWorks 提供了对各种接口和协议的支持,包括Web服务、...
本文将深入探讨Tibco BusinessWorks的设计模式(Tibco Pattern),这是一种用于Tibco产品和技术的一般性设计模式,它不仅为用户提供了一个概念性的指导框架,还作为参考指南,帮助用户更好地理解和应用Tibco的最佳...
综上所述,《TIBCO BusinessWorks™ Process Design Guide》不仅是一份技术文档,也是理解TIBCO BW平台设计哲学、商标政策、软件许可、操作兼容性和法律责任的重要资料。对于那些希望深入了解并有效利用BW进行业务...
1. **高可用性**:Tibco RV提供了高度可靠的消息传递,确保消息的送达,即使在网络故障或其他系统问题的情况下也能恢复。 2. **低延迟**:由于Tibco RV的本地API设计,它能够提供非常低的消息传递延迟,适合实时和...
Tibco Enterprise Message Service(Tibco EMS)提供了完整的Java Message Service(JMS)功能,并包含多项增值特性。测试重点在于验证应用层与中间件层之间的集成效果。文档中详细记录的工作包括: - JMS与BEA ...
文档中提及的所有商标,如TIBCO、TIBCO Adapter、Predictive Business、Information Bus、The Power of Now、TIBCO ActiveMatrix BusinessWorks、TIBCO Rendezvous、TIBCO Administrator、TIBCO Enterprise Message ...
例如,在金融服务领域,TIBCO ESB帮助银行实现实时交易监控,防止欺诈行为;在零售业,BusinessWorks可以优化供应链管理,提升库存周转率;在制造业,TIBCO的解决方案支持工厂自动化和设备远程监控,提高生产效率。 ...