将消息发送到发布/订阅主题
可用性
重要
此功能在 API 管理的“高级”和“开发人员”层中可用。
publish-to-dapr
策略指示 API 管理网关向 Dapr 发布/订阅主题发送消息。 策略通过向 http://localhost:3500/v1.0/publish/{{pubsub-name}}/{{topic}}
发出 HTTP POST 请求、替换模板参数并添加策略语句中指定的内容来实现这一点。
策略假设 Dapr 运行时正在网关所在的 pod 中的 sidecar 容器中运行。 Dapr 运行时实现发布/订阅语义。 详细了解 Dapr 与 API 管理的集成。
注意
按照策略声明中提供的顺序设置策略的元素和子元素。 详细了解如何设置或编辑 API 管理策略。
策略语句
<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>
属性
属性 | 说明 | 需要 | 默认 |
---|---|---|---|
pubsub-name | 目标 PubSub 组件的名称。 映射到 Dapr 中的 pubsubname 参数。 如果不存在,则 topic 属性值必须采用 pubsub-name/topic-name 形式。 允许使用策略表达式。 |
否 | 无 |
主题 | 主题的名称。 映射到 Dapr 中的 topic 参数。 允许使用策略表达式。 | 是 | 空值 |
ignore-error | 如果设置为 true ,则指示策略在收到来自 Dapr 运行时的错误时不触发“on error”部分。 不允许使用策略表达式。 |
否 | false |
response-variable-name | 用于存储来自 Dapr 运行时的响应的变量集合项的名称。 不允许使用策略表达式。 | 否 | 无 |
timeout | 等待 Dapr 运行时做出响应的时间(以秒为单位)。 范围为 1 到 240 秒。 允许使用策略表达式。 | 否 | 5 |
template | 用于转换消息内容的模板引擎。 “Liquid”是唯一支持的值。 | 否 | 无 |
content-type | 消息内容的类型。 “application/json”是唯一支持的值。 | 否 | 无 |
使用情况
使用注意事项
必须在自承载网关中启用 Dapr 支持。
示例
下面的示例演示如何将当前请求的主体发送到“orders”发布/订阅组件的“new”主题。 从 Dapr 运行时接收到的响应存储在 context 对象的“变量”集合的“daprresponse”项中。
例如,如果 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>
相关策略
后续步骤
有关使用策略的详细信息,请参阅:
- 教程:转换和保护 API
- 策略参考,其中提供了策略语句及其设置的完整列表
- 策略表达式
- 设置或编辑策略
- 策略示例