Pub/Sub トピックへのメッセージの送信

適用対象: Developer | Premium

publish-to-dapr ポリシーでは、Dapr Publish/Subscribe トピックにメッセージを送信するように API Management ゲートウェイに指示します。 このポリシーでは、http://localhost:3500/v1.0/publish/{{pubsub-name}}/{{topic}} への HTTP POST 要求を実行することによってこれを実現します。この際、テンプレート パラメーターが置き換えられ、ポリシー ステートメントで指定されたコンテンツが追加されます。

このポリシーでは、Dapr ランタイムがゲートウェイと同じポッドのサイドカー コンテナーで実行されていることを前提としています。 Dapr ランタイムは、Pub/Sub セマンティクスを実装しています。 API Management との Dapr 統合の詳細をご確認ください。

Note

ポリシーの要素と子要素を、ポリシー ステートメントで指定された順序で設定します。 API Management ポリシーを設定または編集する方法について説明します。

ポリシー ステートメント

<publish-to-dapr pubsub-name="pubsub-name" topic="topic-name" ignore-error="false|true" response-variable-name="resp-var-name" timeout="in seconds" template="Liquid" content-type="application/json">
    <!-- message content -->
</publish-to-dapr>

属性

属性 説明 必要 Default
pubsub-name ターゲット PubSub コンポーネントの名前。 Dapr の pubsubname パラメーターにマップされます。 存在しない場合、topic 属性値は pubsub-name/topic-name の形式である必要があります。 ポリシー式を使用できます。 いいえ なし
topic トピックの名前。 Dapr の topic パラメーターにマップされます。 ポリシー式を使用できます。 はい 該当なし
ignore-error true に設定すると、Dapr ランタイムからエラーを受信したときに "on-error" セクションをトリガーしないようにポリシーに指示します。 ポリシー式は使用できません。 いいえ false
response-variable-name Dapr ランタイムからの応答を格納するために使用する Variables コレクションのエントリの名前。 ポリシー式は使用できません。 いいえ なし
timeout Dapr ランタイムが応答するのを待機する時間 (秒)。 範囲は 1 ~ 240 秒です。 ポリシー式を使用できます。 いいえ 5
template メッセージの内容を変換するために使用するテンプレート エンジン。 サポートされている値は "Liquid" のみです。 いいえ なし
content-type メッセージ コンテンツの種類。 現在、サポートされている値は "application/json" のみです。 いいえ なし

使用法

使用上の注意

Dapr のサポートは、セルフホステッド ゲートウェイで有効にする必要があります。

次の例では、現在の要求の本文を "orders" Pub/Sub コンポーネントの "new" トピックに送信する方法を示します。 Dapr ランタイムから受信された応答は、 context オブジェクトの Variables コレクションの "dapr-response" エントリに格納されます。

Dapr ランタイムがターゲット トピックを見つけられないなどでエラーを返した場合は、"on-error" セクションがトリガーされます。 Dapr ランタイムから受信された応答は、呼び出し元に逐語的に返されます。 それ以外の場合は、既定の 200 OK 応答が返されます。

"backend" セクションは空で、要求はバックエンドに転送されません。

<policies>
     <inbound>
        <base />
        <publish-to-dapr
           pubsub-name="orders"
               topic="new"
               response-variable-name="dapr-response">
            @(context.Request.Body.As<string>())
        </publish-to-dapr>
    </inbound>
    <backend>
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
        <return-response response-variable-name="pubsub-response" />
    </on-error>
</policies>

ポリシーに対する処理の詳細については、次のトピックを参照してください。