WS-ReliableMessaging 的实现策略(一)

日期: 2007-12-24 来源:TechTarget中国

  本文讨论了使用最近发布的 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

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐