Red Hat Training

A Red Hat training course is available for Red Hat Fuse

第 21 章 启用可靠的消息传递

摘要

Apache CXF 支持 WS-可靠消息传递(WS-RM)。本章论述了如何在 Apache CXF 中启用和配置 WS-RM。

21.1. WS-RM 简介

概述

WS-可靠Messaging (WS-RM)是一种协议,可确保在分布式环境中可靠地传送消息。它使得在存在软件、系统或网络故障的分布式应用程序之间可靠传递消息。

例如,WS-RM 可用于确保网络只按正确的顺序传送正确的消息。

WS-RM 的工作原理

WS-RM 可确保在源和目标端点之间可靠发送消息。源是消息的初始发件人,目的地是最终接收器,如 图 21.1 “Web 服务可靠消息传递” 所示。

图 21.1. Web 服务可靠消息传递

可靠的消息交换

WS-RM 消息的流可以如下所述:

  1. RM 源向 RM 目的地发送 CreateSequence 协议消息。它包含接收确认的端点的引用( wsrm:AcksTo 端点)。
  2. RM 目的地将 CreateSequenceResponse 协议消息发送回 RM 源。此消息包含 RM 序列会话的序列 ID。
  3. RM 源在应用程序源发送的每个消息中添加 RM Sequence 标头。此标头包含序列 ID 和唯一消息 ID。
  4. RM 源将每条消息传输到 RM 目的地。
  5. RM 目的地通过发送包含 RM SequenceAcknowledgement 标头的消息来确认来自 RM 源的消息。
  6. RM 目的地以精确的顺序向应用程序目的地提供消息。
  7. RM 源重新传输尚未收到确认的消息。

    第一个重新传输尝试会在基本重新传输间隔后进行。默认情况下,连续重新传输尝试会按指数避退间隔,或者以固定间隔进行。如需了解更多详细信息,请参阅 第 21.5 节 “配置 WS-RM”

这整个过程对请求和响应消息都进行对称;即,在响应消息的情况下,服务器充当 RM 源,客户端充当 RM 目的地。

WS-RM 交付保证

WS-RM 可在分布式环境中保证可靠的消息交付,无论使用的传输协议如何。如果无法可靠交付,则源或目的地端点会记录错误。

支持的规格

Apache CXF 支持以下 WS-RM 规格版本:

WS-ReliableMessaging 1.0

(默认) Corresp onds 到 2005 年 2 月发布版本,现已过期。但是,由于向后兼容的原因,这个版本被用作默认设置。

WS-RM 的版本 1.0 使用以下命名空间:

http://schemas.xmlsoap.org/ws/2005/02/rm/

这个版本的 WS-RM 可与以下 WS-Addressing 版本之一一起使用:

http://schemas.xmlsoap.org/ws/2004/08/addressing (default)
http://www.w3.org/2005/08/addressing

严格讲,为了遵守 2005 年 2 月发布版本的 WS-RM,您期望使用这些 WS-寻址版本中的第一个版本(这是 Apache CXF 中的默认设置)。但是,大多数其他 Web 服务实施已切换到最新的 WS-Addressing 规格,因此 Apache CXF 允许您选择 WS-A 版本,以促进互操作性(请参阅 第 21.4 节 “运行时控制”)。

WS-ReliableMessaging 1.1/1.2

对应于官方 1.1/1.2 Web 服务可靠消息传递规范

WS-RM 版本 1.1 和 1.2 使用以下命名空间:

http://docs.oasis-open.org/ws-rx/wsrm/200702

WS-RM 的 1.1 和 1.2 版本使用以下 WS-Addressing 版本:

http://www.w3.org/2005/08/addressing

选择 WS-RM 版本

您可以选择要使用的 WS-RM 规格版本,如下所示:

服务器侧
在提供程序上,Apache CXF 可调整客户端使用 WS-ReliableMessaging 的每个版本并对其做出相应的响应。
客户端
在客户端一端,WS-RM 版本由您在客户端配置中使用的命名空间(请参阅 第 21.5 节 “配置 WS-RM”)或者在运行时覆盖 WS-RM 版本(请参阅 第 21.4 节 “运行时控制”)。