Menu Close

21.5.3. WS-RM 設定のユースケース

概要

このサブセクションでは、ユースケースの観点から WS-RM 属性を設定することに焦点を当てています。ここでは、属性は http://schemas.xmlsoap.org/ws/2005/02/rm/policy/ namespace で定義された標準の WS-RM ポリシー属性で、rmManager Spring Bean 内の RMAssertion で設定する例だけが示されています。このような属性を WSDL ファイルまたは外部添付で機能内のポリシーとして設定する方法の詳細は、「標準の WS-RM ポリシー属性の設定」を参照してください。

以下のユースケースについて説明します。

ベースの再送信間隔

BaseRetransmissionInterval 要素は、RM ソースがまだ受信確認を受け取っていないメッセージを再送信する間隔を指定します。http://schemas.xmlsoap.org/ws/2005/02/rm/wsrm-policy.xsd スキーマファイルで定義されます。デフォルト値は 3000 ミリ秒です。

例21.8「WS-RM ベース再送信間隔の設定」で、WS-RM ベース再送信間隔の設定方法を説明します。

例21.8 WS-RM ベース再送信間隔の設定

<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>

再送信の指数バックオフ

ExponentialBackoff 要素は、未確認メッセージのその後の再送信試行が指数間隔で実行されるかどうかを決定します。

ExponentialBackoff 要素が存在する場合は、この機能が有効になります。デフォルトでは、2 の指数バックオフ比率が使用されます。ExponentialBackoff はフラグです。要素が存在する場合、指数バックオフが有効になります。要素がない場合、指数バックオフは無効になっています。値は必要ありません。

例21.9「WS-RM 指数バックオフプロパティーの設定」で、再送信の WS-RM 指数バックオフを設定する方法を説明します。

例21.9 WS-RM 指数バックオフプロパティーの設定

<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 確認応答間隔の設定」で、WS-RM 確認応答間隔の設定方法を説明します。

例21.10 WS-RM 確認応答間隔の設定

<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>

未確認メッセージのしきい値の最大値

maxUnacknowledged 属性は、シーケンスが終了するまでに累積可能な、シーケンスごとの未確認メッセージの最大数を設定します。

例21.11「WS-RM の最大未確認メッセージのしきい値の設定」で、WS-RM の最大未確認メッセージのしきい値の設定方法を説明します。

例21.11 WS-RM の最大未確認メッセージのしきい値の設定

<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 シーケンスの長さに制限がないことを意味します。

この属性が設定されている場合、制限に達し、以前に送信されたメッセージの確認応答をすべて受信すると、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 宛先は、メッセージをアプリケーションの宛先に 1 度だけ配信します。メッセージが複数回配信されると、エラーが発生します。シーケンス内の一部のメッセージは配信されない可能性があります。
  • AtLeastOnce: RM 宛先は、少なくとも 1 度メッセージをアプリケーションの宛先に配信します。送信されるメッセージはすべて配信されるか、エラーが発生します。一部のメッセージは複数回配信される可能性があります。
  • InOrder: RM 宛先は、送信された順番にメッセージをアプリケーションの宛先に配信します。この配信の保証は、AtMostOnce または AtLeastOnce の保証と組み合わせることができます。

例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>