Web服务可靠消息传输简介(三)

日期: 2007-12-25 作者:Paul Fremantle翻译:罗小平 来源:TechTarget中国

  消息编号,用于在SequenceAcknowledgement头中识别消息。以下是SequenceAcknowledgement头信息例子:

  <soap:header>  <wsrm:sequenceacknowledgement>      <wsrm:identifier>http://Business456.com/RM/ABC</wsrm:identifier>      <wsrm:acknowledgementrange lower="1" upper="1" />    <wsrm:acknowledgementrange lower="3" upper="3" />      </wsrm:sequenceacknowledgement></soap:header>

  单向可靠传输实例

  我们先看个例子,为求简洁仅要求单向可靠,也就是说在这个例子里,客户端仅有一个RMS,服务端仅有一个RMD。

  客户端需发送一个应用级消息时,RMS首先向指定URL发送CreateSequence消息。

  RMD截获消息,并通过CreateSequenceResponse予以响应。其中包括序列的识别符SequenceID。

  现在,RMS将在原始消息增加Sequence信息头,其中包括SequenceID和消息编号(在本例中是1)。

  RMS继续为其他消息增加递增后的序列头信息。

  RMD将这些消息转送给服务端应用,并提供唯一性、有序性等基本保障。

  根据预定的定时策略,RMD会在某个时候向RMS反馈SequenceAcknowledgement消息。RMS创建序列时,会向RMD传送一个确认地址(即AcksTo地址)。在本例中,我们假设AcksTo地址是一个WS-A匿名URI——也就是说你使用的是一个透明的通道。RMD将以HTTP方式响应确认信息。因为本例模拟的是单向可靠传输环境,因此在这之后就不会有完整的SOAP封包回馈给客户端,所以RMD会产生一个空SOAP封包,写入头信息后,通过HTTP返回。回馈到达客户端应用后,将由RMS接收。

  注意,这种确认并不是与消息一一对应的,而是代表对所有由RMD成功接收的消息的确认。

  假如有任何消息丢失,RMS将重发。

  一旦RMS成功发送完所有消息,它就可以终结序列了,为此只需向RMD发送一个TerminateSequence消息。

  RMD向RMS反馈TerminateSequenceResponse。

  大功告成!

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐