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" のみです。 | いいえ | なし |
使用法
- ポリシー セクション: inbound
- ポリシー スコープ: グローバル、製品、API、操作
- ゲートウェイ: セルフホステッド
使用上の注意
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>
関連ポリシー
関連するコンテンツ
ポリシーに対する処理の詳細については、次のトピックを参照してください。