WS-ReliableMessaging
WS-ReliableMessaging描述了一种协议,在出现软件组件,系统或网络故障时,使得SOAP消息能够在分布式应用间能够可靠传送。
2003年3月,BEA Systems, 微软, IBM, TIBCO软件公司共同撰写了最初的规范,在随后的两年里进行改进。2005年6月,2005年3月的版本于被提交到OASIS的Web服务可靠交换(WS-RX)技术委员会,2007年6月14日,被批准成为OASIS标准,2009年2月2日,1.2版本被批准。
在WS-ReliableMessaging之前,OASIS曾提出过一个竞争的规范(WS-Reliability),该规范为富士通,日立,NEC,甲骨文公司,Progress Software和太阳微系统所支持。这些支持者中的大多数现在也支持WS-ReliableMessaging规范。
可靠消息模型
编辑源应用想在一个不可靠的基础设施上可靠地发送消息给目标应用。想要实现这一点,应用需要使用可靠消息源和可靠消息目标。源应用发消息给可靠的消息源。可靠的消息源使用WS-ReliableMessaging (WS-RM)协议来传送消息到可靠的消息目标。可靠的消息目标再将消息递交给目的应用。如果可靠的消息源因故无法传送消息到可靠的消息目标,它必须抛出一个异常或者其他方法标识该消息没有被传送出去。源应用和可靠的消息源可能实现在同一进程中或是不同的组件。类似的,目标应用和可靠的消息目标可能在一个进程中或不同的组件。
需要注意的是,WS-RM规范仅处理消息在线上传输的内容和行为。消息如何从源应用发送到可靠消息源,消息如何从可靠消息目标递送到目标服务,消息是在内存中存储,还是持久化在硬盘上,等等,这些考虑都不在WS-RM规范的范围内。
WS-RM协议定义和支持了集中递送保障,包括:
- 至少一次(AtLeastOnce) - 每一条消息将被递送到目标应用至少一次。如果一条消息无法被递送,可靠消息源或可靠消息目标至少有一个应当报错。例如,目标应用可能得到重复的信息。
- 至多一次(AtMostOnce) - 每一条消息将被递送到目标应用不超过一次。消息可以没有被递送到目标应用,但目标应用决不能收到重复的消息。
- 正好一次(ExactlyOnce) - 每一条消息将被递送到应用一次且仅一次。如果消息无法被递送,可靠消息源或可靠消息目标至少有一个应当报错。目标应用将不会受到重复的消息。
- 按序(InOrder) - 消息将按照从源应用发送到可靠消息源的顺序,从可靠消息目标被递送到目标应用。这一保障包括了以上所有保障。
可组合的架构
编辑WS-ReliableMessaging使用SOAP和WSDL的可扩展性模型。WS-ReliableMessaging并没有定义一个完整的消息解决方案的所有特性。WS-ReliableMessaging是一块积木,与其他Web服务规范和应用特定的恶协议一同使用来构建完整的消息解决方案。