Idempotent Message Validator

Idempotent Message Validator (冪等性のあるメッセージバリデーター) は、受信メッセージの一意の ID を確認することによって、一意のメッセージのみがフローの実行を継続するようにします。Mule メッセージの任意の入力属性を ID として使用するか、または DataWeave 式を設定することで ID を計算できます。また、DataWeave ​Crypto​ 関数を使用してデータからハッシュ (SHA、MD5) を計算することもできます。

メッセージのハッシュ

DataWeave では、ハッシュ関数を実行するための ​Crypto​ ライブラリをインポートできます。ハッシュの計算は、Mule メッセージの一意の ID を計算する場合に便利です。たとえば、ペイロードから MD5 ハッシュを取得してそれを ID として使用する場合は、Anypoint Studio で Idempotent Message Validator のプロパティを開いて、​[ID Expression (ID の式)]​ (XML では ​idExpression​) を次の DataWeave 式に設定します。

#[
    %dw 2.0
    output text/plain
    import dw::Crypto
    ---
    Crypto::hashWith(payload,'MD5')
]

  • 次の例では、HTTP 要求からクエリパラメーター ​id​ を抽出して、その値を一意の ID として使用してメッセージを絞り込むように Idempotent Message Validator を設定しています。

    <flow name="myFlow">
      <http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/"/>
      ...
      <idempotent-message-validator doc:name="Idempotent Message Validator" idExpression="#[attributes.queryParams.id]"/>
      ...
    </flow>
  • 次の例では、DataWeave 式を使用してペイロードをハッシュし、その結果を永続的なオブジェクトストアに保存して、処理後のメッセージ ID を一意の ID として使用してメッセージを絞り込むように Idempotent Message Validator を設定しています。

    <flow name="myFlow">
      <http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/"/>
      ...
      <idempotent-message-validator doc:name="Idempotent Message Validator" idExpression="
        #[%dw 2.0
          import dw::Crypto
          output application/octet-stream
          ---
          Crypto::hashWith(payload,'MD5')]">
        <os:private-object-store alias="privateObjectStore"
           entryTtl="1"
           entryTtlUnit="MINUTES"
           maxEntries="10" />
      </idempotent-message-validator>
      ...
    </flow>

パラメーターリファレンス

名前 説明 デフォルト値 必須

ID Expression (ID の式)

Mule が ID を生成するために使用する式。DataWeave 関数を使用して ID を計算するか、または Mule メッセージの任意の既存の値から ID を抽出することができます。

#[correlationId]

いいえ

Value Expression (値の式)

このパラメーターは使用しません。値を設定しても効果はありません。

#[correlationId]

いいえ

Object Store (オブジェクトストア)

Object Store (オブジェクトストア)

コンポーネントが処理されたメッセージ ID を格納するためのグローバルオブジェクトストアを参照する名前または非公開オブジェクトストアの定義。

オブジェクトストアマネージャーによって作成されたオブジェクトストア。永続的ではなく、エントリ TTL は 5 分、有効期限間隔は 6 秒です。

いいえ

Store Prefix (ストアプレフィックス)

String (文字列)

オブジェクトストア名のプレフィックスを定義します。この値は内部で作成されたオブジェクトストアにのみ使用します。

configFileName​.flowName.IdempotentMessageValidator

いいえ

スロー

  • MULE:DUPLICATE_MESSAGE

関連情報