本文讨论了使用最近发布的 WS-ReliableMessaging 规范来实现可靠的消息传递时确保其健壮性、完整性和性能的一些注意事项,并描述了面向消息的中间件的作用来处理这些注意事项。
引言
在 Web 服务中,可靠的消息传递的目标是使应用程序简单地、可靠地、有效地发送和接收消息,甚至在应用程序、平台或网络失败的情况下。最近由 BEA、IBM、Microsoft 和 Tibco 联合发布的 WS-ReliableMessaging 规范(请参阅 参考资料)定义了一种协议和一套机制,使 Web 服务的开发人员能够确保在两个端点之间可靠地传递消息,该规范还具有各种传递保证和健壮性特征。
然而,仅靠 WS-ReliableMessaging 规范并不足以解决在实现不同程度的健壮性、完整性和性能(它们通常是应用程序要求的)时必须考虑的许多重要注意事项。
本文讨论了部分注意事项并建议把中间件作为 WS-ReliableMessaging 协议的最有可能也往往是最合适的实现策略。
实现 WS-ReliableMessaging 协议
WS-ReliableMessaging 规范把 Sequence 定义为一组消息的共享上下文,这组消息在源应用程序和目标应用程序之间进行交换,并有相同的传递保证要求。协议在源端点的实现至少必须能够在 Sequence 中唯一地标识并重发消息,直到目标端点确认接收到所有消息。目标端点上的实现必须能够在 Sequence 中跟踪接收到的消息并传递确认消息给源端点。WS-ReliableMessaging 规范中详细说明了正确实现该协议的的各个细节。
参与 Sequence 的应用程序不能从源应用程序实例或目标应用程序实例的失败中恢复,在某些情况下这是可以接受的。
例如,WS-ReliableMessaging 协议可以用来通过不可靠的传输(如 UDP)实现可靠的消息传递。应用程序可能不要求在应用程序或平台出现错误时还要可靠地传递 Sequence 中的消息。它可能只要求能够检测到何时发生错误,然后终止这个 Sequence ,开始一个新的 Sequence 。在这种情况下,该 Sequence 的状态和所交换的消息可以被保存在易丢失的、不可恢复的存储介质(如内存)中,而不必保存在信息持久的磁盘上。
然而,有时候在发送方和/或接收方应用程序甚至是执行应用程序的平台出现错误时也必须有可靠的传递保证,如果应用程序要求这样,那么每个应用程序必须能够可靠地保持消息和 Sequence 中共享状态的一致性,以使它们可以从错误处恢复并继续处理 Sequence 中的消息。为了确保应用程序的状态与 Sequence 的状态一致,实现 ReliableMessaging 协议的平台将需要能够将保存和发布消息作为不可分割的操作来执行,还要能够利用与发送和接受消息有关的事务性逻辑,并与其他资源管理器(如应用程序数据库)一起参与协调事务。
根据延迟和吞吐量有效地执行所有这些活动是非常具有挑战性的,并要求应用程序开发人员慎重考虑,而他们通常都忽略了这一点。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
中间件可帮助企业实现应用现代化
本文,Tom Nolle讲述了大家都需要了解的现代化的流行做法,“中间件”方式——解释了如何确保采用的是正确方法,如何简化流程,并且为将来做好准备。
-
云连锁反应:中间件栈添层 应用更轻量
中间件栈增加了层以及对轻量应用的开发需求将导致更好的云访问,而云的无所不在增加了中间件栈的层次。
-
如何应对中间件工具引发的安全风险
中间件工具会引起巨大的漏洞,足以抵消所带来的好处。然而,通过一些简单的步骤你就可以保护自己和数据。
-
越来越强大的IT标准、SOA及其他颠覆性技术
在本期问答环节中,我们将荣幸的邀请到来自Open Group的Chris Harding先生与我们一起讨论他对IT标准、SOA以及移动和云计算等科技未来的发展情况。