다음을 통해 공유

发送服务总线消息

可用性

重要

此功能在 API 管理的“高级”、“标准”、“基本”和“开发人员”层中可用 。

send-service-bus-message 策略将消息发送到 Azure 服务总线队列或主题。

注释

注释

按照策略声明中提供的顺序设置策略的元素和子元素。 详细了解如何设置或编辑 API 管理策略

政策声明

<send-service-bus-message queue-name="service bus queue" topic-name="service bus topic"
      namespace="FQDN of service bus namespace" client-id="ID of user-assigned managed identity">
        <message-properties>
                <message-property name="property-name">property-value</message-property>
                <!-- if there are multiple properties, then add additional message-property elements -->
        </message-properties>
        <payload>"message content"</payload>
</send-service-bus-message>

特性

Attribute Description 必选 违约
queue-name 指定要向其发送消息的服务总线队列的名称。 允许策略表达式和命名值。 必须指定或queue-nametopic-name必须指定。 N/A
topic-name 指定要向其发送消息的服务总线主题的名称。 允许策略表达式和命名值。 必须指定或queue-nametopic-name必须指定。 N/A
namespace 指定服务总线命名空间的完全限定域名。 允许策略表达式和命名值。 N/A
client-id 指定用户分配的托管标识的客户端 ID,以便通过服务总线进行身份验证。 必须为标识分配 Azure 服务总线数据发送者角色。 允许策略表达式和命名值。 如果未指定,则使用系统分配的标识。 N/A

Elements

元素 Description 必选
payload 指定要发送到服务总线的消息有效负载。 允许策略表达式和命名值。 是的
message-properties 一组 message-property 子元素,这些子元素指定要与消息有效负载一起传递的元数据。 每个 message-property 值对都包含一个名称/值对。 允许策略表达式和命名值。

Usage

使用注意事项

  • 必须预先创建接收消息的 Azure 服务总线队列或主题。
  • 每个策略定义可以多次使用此策略。

例子

将消息发送到服务总线队列

在此示例中,包含请求正文的消息将发送到服务总线队列。 API 管理实例使用用户分配的标识进行访问。 然后将请求转发到后端服务。

<policies>
    <inbound>
        <send-service-bus-message queue-name="orders" client-id="00001111-aaaa-2222-bbbb-3333cccc4444" namespace="my-service-bus.servicebus.chinacloudapi.cn">
           <payload>@(context.Request.Body.As<string>(preserveContent: true))</payload>
        </send-service-bus-message>
    </inbound>
    <backend>
        <forward-request timeout="60"/>
    </backend>
</policies>

将消息发送到服务总线主题

在此示例中,包含请求正文的消息将发送到服务总线主题。 API 管理实例使用系统分配的标识进行访问。 然后将请求转发到后端服务。

<policies>
    <inbound>
        <send-service-bus-message topic-name="orders" namespace="my-service-bus.servicebus.chinacloudapi.cn">
           <payload>@(context.Request.Body.As<string>(preserveContent: true))</payload>
        </send-service-bus-message>
    </inbound>
    <backend>
        <forward-request timeout="60"/>
    </backend>
</policies>

发送消息和元数据

在此示例中,包含请求正文的消息将发送到服务总线主题,并将消息属性设置为使用有效负载发送元数据。 API 管理实例使用系统分配的标识进行访问。 然后将请求转发到后端服务。

<policies>
    <inbound>
        <send-service-bus-message topic-name="orders" namespace="my-service-bus.servicebus.chinacloudapi.cn">
           <message-properties>
              <message-property name="Customer">Contoso</message-property>
           </message-properties>
           <payload>@(context.Request.Body.As<string>(preserveContent: true))</payload>
        </send-service-bus-message>
    </inbound>
    <backend>
        <forward-request timeout="60"/>
    </backend>
</policies>

发送消息并立即返回

在此示例中,包含请求正文的消息将发送到服务总线主题。 API 管理实例使用系统分配的标识进行访问。 201然后,响应状态代码会立即返回给调用方。

<policies>
    <inbound>
        <send-service-bus-message topic-name="orders" namespace="my-service-bus.servicebus.chinacloudapi.cn">
           <payload>@(context.Request.Body.As<string>(preserveContent: true))</payload>
        </send-service-bus-message>
        <return-response>
            <set-status code="201" reason="Created!" />
        </return-response>
    </inbound>
</policies>

后续步骤

若要详细了解如何使用策略,请参阅: