Flex Gateway新着情報
Governance新着情報
Monitoring API Manager受信メッセージの一意の ID を確認することによって、一意のメッセージのみがフローの実行を継続するようにします。
Mule メッセージの任意の入力属性を ID として使用するか、または DataWeave 式を設定することで ID を計算できます。また、DataWeave Crypto
関数を使用してデータからハッシュ (SHA、MD5) を計算することもできます。
このコンポーネントは、次の XML 構造をサポートします。
<idempotent-message-validator
doc:name="Idempotent message validator"
doc:id="cyuupj"
idExpression="#[]">
<!-- Object Store to use for storing the processed message IDs -->
<os:private-object-store />
</idempotent-message-validator>
Idempotent Message Validator (<idempotent-message-validator/>
) 属性は UI および XML で設定できます。
属性名 | 属性 XML | 説明 |
---|---|---|
Idempotent message validator (冪等性のあるメッセージバリデーター) (デフォルト) |
|
キャンバスに表示されるコンポーネントの編集可能な名前。 |
なし |
|
コンポーネントの自動生成された識別子。 |
Value expression (値の式) |
|
なし |
Id expression (ID 式) |
|
Mule が ID を生成するために使用する式。DataWeave 関数を使用して ID を計算するか、または Mule メッセージの任意の既存の値から ID を抽出することができます。 |
Store prefix (ストアプレフィックス) |
|
なし |
Object store (オブジェクトストア) |
|
なし |
この例では、一意の識別子として使用するために HTTP 要求から ID を抽出するように Idempotent Message Validator を設定する方法と、DataWeave 式を使用してペイロードをハッシュし、メッセージ ID を一意の識別子として使用する方法を示します。
次の例では、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>