21.5.3. WS-RM 配置用例


概述

本小节重点介绍从用例角度配置 WS-RM 属性。如果属性是 http://schemas.xmlsoap.org/ws/2005/02/rm/policy/ 命名空间中定义的标准 WS-RM 策略属性,则只显示在 rmManager Spring bean 中的 RMAssertion 中设置它的示例。有关如何在功能内设置这样的属性 ; 在 WSDL 文件或外部附加中,请参阅 第 21.5.2 节 “配置标准 WS-RM 策略属性”

涵盖了以下用例:

基本重新传输间隔

BaseRetransmissionInterval 元素指定 RM 源重新传输消息尚未被确认的间隔。它在 http://schemas.xmlsoap.org/ws/2005/02/rm/wsrm-policy.xsd 模式文件中定义。默认值为 3000 毫秒。

例 21.8 “设置 WS-RM Base Retransmission Interval” 显示如何设置 WS-RM 基本重新传输间隔。

例 21.8. 设置 WS-RM Base Retransmission Interval

<beans xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy
...>
<wsrm-mgr:rmManager id="org.apache.cxf.ws.rm.RMManager">
    <wsrm-policy:RMAssertion>
        <wsrm-policy:BaseRetransmissionInterval Milliseconds="4000"/>
    </wsrm-policy:RMAssertion>
</wsrm-mgr:rmManager>
</beans>

重新传输的 exponential backoff

ExponentialBackoff 元素确定是否以指数级间隔执行非确认的消息尝试连续重传输尝试。

存在 ExponentialBackoff 元素可启用此功能。默认会使用 exponential backoff 比率为 2ExponentialBackoff 是一个标志。当元素存在时,会启用 exponential backoff。当元素不存在时,则禁用 exponential backoff。不需要值。

例 21.9 “设置 WS-RM Exponential Backoff Property” 显示如何为重新传输设置 WS-RM exponential backoff。

例 21.9. 设置 WS-RM Exponential Backoff Property

<beans xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy
...>
<wsrm-mgr:rmManager id="org.apache.cxf.ws.rm.RMManager">
    <wsrm-policy:RMAssertion>
        <wsrm-policy:ExponentialBackoff/>
    </wsrm-policy:RMAssertion>
</wsrm-mgr:rmManager>
</beans>

确认间隔

AcknowledgementInterval 元素指定 WS-RM 目的地发送异步确认的间隔。另外,除了它在收到传入消息时发送的同步确认之外。默认异步确认间隔为 0 毫秒。这意味着,如果 AcknowledgementInterval 没有被配置为特定值,则会立即发送确认信息(即在第一可用商机中)。

只有在满足以下任一条件时,RM 目标才会发送异步确认:

  • RM 目的地使用非匿名 wsrm:acksTo 端点。
  • 在确认间隔到期前不会发生响应消息确认机会。

例 21.10 “设置 WS-RM 致谢 Interval” 显示如何设置 WS-RM 确认间隔。

例 21.10. 设置 WS-RM 致谢 Interval

<beans xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy
...>
<wsrm-mgr:rmManager id="org.apache.cxf.ws.rm.RMManager">
    <wsrm-policy:RMAssertion>
        <wsrm-policy:AcknowledgementInterval Milliseconds="2000"/>
    </wsrm-policy:RMAssertion>
</wsrm-mgr:rmManager>
</beans>

最多未确认的消息阈值

maxUnack nowled 属性设置在终止序列前可以获取每个序列的最大未确认消息数。

例 21.11 “设置 WS-RM Maximum Unacknowled Message Threshold” 显示如何设置 WS-RM 最大无法确认的消息阈值。

例 21.11. 设置 WS-RM Maximum Unacknowled Message Threshold

<beans xmlns:wsrm-mgr="http://cxf.apache.org/ws/rm/manager
...>
<wsrm-mgr:reliableMessaging>
    <wsrm-mgr:sourcePolicy>
        <wsrm-mgr:sequenceTerminationPolicy maxUnacknowledged="20" />
    </wsrm-mgr:sourcePolicy>
</wsrm-mgr:reliableMessaging>
</beans>

RM 序列的最大长度

maxLength 属性设置 WS-RM 序列的最大长度。默认值为 0, 这表示 WS-RM 序列的长度为 unbound。

当设置了此属性时,RM 端点会在达到限制时创建一个新的 RM 序列,并在收到之前发送的消息的所有确认后。新消息使用新的排序发送。

例 21.12 “设置 WS-RM 消息序列的最大长度” 显示如何设置 RM 序列的最大长度。

例 21.12. 设置 WS-RM 消息序列的最大长度

<beans xmlns:wsrm-mgr="http://cxf.apache.org/ws/rm/manager
...>
<wsrm-mgr:reliableMessaging>
    <wsrm-mgr:sourcePolicy>
        <wsrm-mgr:sequenceTerminationPolicy maxLength="100" />
    </wsrm-mgr:sourcePolicy>
</wsrm-mgr:reliableMessaging>
</beans>

消息发送保证策略

您可以将 RM 目标配置为使用以下发送保证策略:

  • AtMostOnce - RM 目的地仅向应用程序目的地发送一次。如果引发了错误,则发送一条消息超过一次。可能不会发送序列中的一些消息。
  • AtLeastOnce - RM 目标至少将消息传送到应用程序目的地。发送的每个消息都会进行交付,或引发错误。有些消息可能会多一次发送。
  • InOrder - RM 目的地按发送的顺序将消息传送到应用程序目的地。这种交付保障可与 AtMostOnceAtLeastOnce ures 结合使用。

例 21.13 “设置 WS-RM 消息发送保证策略” 介绍如何设置 WS-RM 消息发送保证。

例 21.13. 设置 WS-RM 消息发送保证策略

<beans xmlns:wsrm-mgr="http://cxf.apache.org/ws/rm/manager
...>
<wsrm-mgr:reliableMessaging>
    <wsrm-mgr:deliveryAssurance>
        <wsrm-mgr:AtLeastOnce />
    </wsrm-mgr:deliveryAssurance>
</wsrm-mgr:reliableMessaging>
</beans>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.