搜索

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

download PDF

摘要

Apache CXF 支持 WS-Reliable Messaging (WS-RM)。本章解释了如何在 Apache CXF 中启用和配置 WS-RM。

21.1. WS-RM 简介

概述

WS-ReliableMessaging (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

(默认) 从 2011 年 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

严格说,为了遵守 WS-RM 的 2 月 5 日提交版本,您完全不建议使用这些 WS 寻址版本(这是 Apache CXF 中的默认设置)。但是大多数其他 Web 服务实现已切换到最新的 WS 寻址规范,因此 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 节 “运行时控制”)。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.