Enviar mensagem do barramento de serviço

APLICA-SE A: Desenvolvedor | Básico | Padrão | Prêmio

A send-service-bus-message política envia uma mensagem para um tópico ou fila do Barramento de Serviço do Azure. Você pode opcionalmente encaminhar a requisição da API para o serviço backend.

Observação

Observação

Defina os elementos e os elementos filhos da política na ordem fornecida no enunciado da política. Saiba mais sobre como definir e editar as políticas de Gerenciamento de API.

Declaração de política

<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-id="message ID"
    session-id="session ID"
    time-to-live="message time to live"
    response-variable-name="context variable name"
    ignore-error="false">
        <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>

Attributes

Attribute Description Obrigatório Padrão
queue-name Especifica o nome da fila do barramento de serviço para o qual enviar a mensagem. Expressões de política e valores nomeados são permitidos. queue-name Ou topic-name deve ser especificado. Não N/A
topic-name Especifica o nome do tópico do barramento de serviço para o qual enviar a mensagem. Expressões de política e valores nomeados são permitidos. queue-name Ou topic-name deve ser especificado. Não N/A
namespace Especifica o nome de domínio totalmente qualificado do namespace do barramento de serviço. Expressões de política e valores nomeados são permitidos. Não N/A
client-id Especifica a ID do cliente da identidade gerenciada atribuída pelo usuário para autenticar com o barramento de serviço. A identidade deve ser atribuída à função de Remetente de Dados do Barramento de Serviço do Azure. Expressões de política e valores nomeados são permitidos. Se você não especificar esse atributo, a identidade atribuída ao sistema é usada. Não N/A
message-id Identificador da mensagem. Deve ser um GUID válido. Expressões de política são permitidas. Se omitido, o Gerenciamento de API gera um GUID. Não GUID Gerado
session-id Identificador de sessão do Barramento de Serviço usado para agrupar mensagens relacionadas. Deve ser um GUID válido. Expressões de política são permitidas. Não N/A
time-to-live Quanto tempo a mensagem permanece disponível para processamento antes de expirar. Use um valor TimeSpan, por 00:10:00exemplo . Não N/A
response-variable-name Nome de uma variável de contexto que recebe informações sobre a operação de envio do Barramento de Serviço. Não N/A
ignore-error Se uma falha de envio do Barramento de Serviço deve permitir que a execução da política continue. true = continuar; false = invocar o tratamento normal de erros. Não false

Observação

Quando você especifica response-variable-name, o Gerenciamento de API armazena informações sobre a operação de envio do Barramento de Serviço nessa variável de contexto. Em caso de sucesso, contém MessageId, SessionId, e TimeToLive. Em uma falha de envio ignorada, ele contém Error.Reason e Error.Message.

Elements

Elemento Description Obrigatório
payload Especifica o conteúdo da mensagem a ser enviada para o barramento de serviço. Expressões de política e valores nomeados são permitidos. Yes
message-properties Uma coleção de message-property subelementos que especificam metadados a serem passados com o conteúdo da mensagem. Cada message-property um consiste em um par nome-valor. Expressões de política e valores nomeados são permitidos. Não

Usage

Notas de utilização

  • Você deve criar previamente a fila ou o tópico do Barramento de Serviço do Azure que recebe uma mensagem.
  • Você pode usar essa política várias vezes por definição de política.
  • Se você omitir message-id, o Gerenciamento de API gera um GUID.
  • Os valores e session-id configurados message-id devem ser GUIDs válidos.
  • Use session-id quando a entidade Barramento de Serviço exigir sessões.
  • time-to-live usa um TimeSpan valor como 00:10:00.
  • ignore-error Vale para falhas de envio. Configuração inválida de mensagens, como um GUID ou TTL inválidos, ainda causa falha na política.

Exemplos

Enviar uma mensagem para uma fila do barramento de serviço

Neste exemplo, uma mensagem composta pelo corpo da solicitação é enviada para a fila de ordens. O ID da solicitação se torna o ID da mensagem, a mensagem expira após 10 minutos, e a informação de envio é armazenada em serviceBusResult. Uma falha de envio invoca o tratamento de erros de gerenciamento de API. A instância de Gerenciamento de API usa uma identidade atribuída pelo usuário para acesso. Em seguida, a solicitação é encaminhada para o serviço de back-end.

<policies>
    <inbound>
        <send-service-bus-message 
          queue-name="orders"
          namespace="contoso-messaging.servicebus.windows.net"
          message-id="@(context.RequestId.ToString())"
          time-to-live="00:10:00"
          response-variable-name="serviceBusResult"
          ignore-error="false">
          <payload>
            @(context.Request.Body.As<string>(preserveContent: true))
          </payload>
        </send-service-bus-message>
    </inbound>
    <backend>
        <forward-request timeout="60"/>
    </backend>
</policies>

Enviar uma mensagem para um tópico do barramento de serviço

Neste exemplo, você envia uma mensagem que contém o corpo da solicitação para um tópico do barramento de serviço. A instância de Gerenciamento de API usa uma identidade atribuída pelo sistema para acesso. Depois, você encaminha a solicitação para o serviço de backend.

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

Enviar uma mensagem e metadados

Neste exemplo, você envia uma mensagem que contém o corpo da solicitação para um tópico do barramento de serviço e define uma propriedade de mensagem para enviar metadados com a carga útil. A instância de Gerenciamento de API usa uma identidade atribuída pelo sistema para acesso. Depois, você encaminha a solicitação para o serviço de backend.

<policies>
    <inbound>
        <send-service-bus-message topic-name="orders" namespace="my-service-bus.servicebus.windows.net">
           <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>

Enviar mensagem e retornar imediatamente

Neste exemplo, você envia uma mensagem que contém o corpo da solicitação para um tópico do barramento de serviço. A instância de Gerenciamento de API usa uma identidade atribuída pelo sistema para acesso. Depois, você retorna imediatamente um 201 código de status de resposta para o interlocutor.

<policies>
    <inbound>
        <send-service-bus-message topic-name="orders" namespace="my-service-bus.servicebus.windows.net">
           <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>

Para obter mais informações sobre como trabalhar com políticas, consulte: