Partilhar via


AMQP 1.0 no Barramento de Serviço do Microsoft Azure: operações baseadas em solicitação-resposta

Este artigo define a lista de operações baseadas em solicitação/resposta do Barramento de Serviço do Microsoft Azure. Essas informações são baseadas no rascunho de trabalho do AMQP Management Versão 1.0.

Para obter um guia detalhado do protocolo AMQP 1.0 no nível de cabo, que explica como o Service Bus implementa e se baseia na especificação técnica do OASIS AMQP, consulte o AMQP 1.0 no guia de protocolo do Azure Service Bus e Hubs de Eventos.

Conceitos

ServiceBusReceivedMessage / ServiceBusMessage

Representa uma mensagem no Service Bus, que é mapeada para uma mensagem AMQP. O mapeamento é definido no guia de protocolo AMQP do Service Bus.

Anexar ao nó de gerenciamento de entidade

Todas as operações descritas neste documento seguem um padrão de solicitação/resposta, têm escopo para uma entidade e exigem anexação a um nó de gerenciamento de entidade.

Cria um link para o nó de gerenciamento para enviar solicitações.

requestLink = session.attach(
role: SENDER,
   	target: { address: "<entity address>/$management" },
   	source: { address: ""<my request link unique address>" }
)

Cria um link para receber respostas do nó de gerenciamento.

responseLink = session.attach(
role: RECEIVER,
	source: { address: "<entity address>/$management" }
   	target: { address: "<my response link unique address>" }
)

Transferir uma mensagem de pedido

Transfere uma mensagem de solicitação.
Um estado de transação pode ser adicionado opcionalmente para operações que suportam transações.

requestLink.sendTransfer(
        Message(
                properties: {
                        message-id: <request id>,
                        reply-to: "<my response link unique address>"
                },
                application-properties: {
                        "operation" -> "<operation>",
                }
        ),
        [Optional] State = transactional-state: {
                txn-id: <txn-id>
        }
)

Receber uma mensagem de resposta

Recebe a mensagem de resposta do link de resposta.

responseMessage = responseLink.receiveTransfer()

A mensagem de resposta está no seguinte formato:

Message(
properties: {
		correlation-id: <request id>
	},
	application-properties: {
			"statusCode" -> <status code>,
			"statusDescription" -> <status description>,
           },
)

Endereço da entidade do Service Bus

As entidades do Service Bus devem ser abordadas da seguinte forma:

Tipo de entidade Endereço Exemplo
queue <queue_name> “myQueue”

“site1/myQueue”
topic <topic_name> “myTopic”

“site2/page1/myQueue”
subscrição <topic_name>/Subscriptions/<subscription_name> “myTopic/Subscriptions/MySub”

Operações de mensagem

Bloqueio de renovação de mensagem

Estende o bloqueio de uma mensagem pela duração de bloqueio definida na fila ou assinatura.

Pedir

A mensagem de solicitação deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
operation string Sim com.microsoft:renew-lock
com.microsoft:server-timeout uint Não Tempo limite do servidor de operação em milissegundos.

O corpo da mensagem de solicitação deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
lock-tokens Matriz de UUID Sim Tokens de bloqueio de mensagem para renovar.

Nota

O token de bloqueio aqui refere-se à delivery-tag propriedade na mensagem AMQP recebida. Se você recebeu uma mensagem adiada e deseja renovar seu bloqueio, use a propriedade lock-token na mensagem em vez de .delivery-tag

Response

A mensagem de resposta deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
statusCode número inteiro Sim Código de resposta HTTP [RFC2616]

200: OK – sucesso, caso contrário falhou.
statusDescrição string Não Descrição do estado.

O corpo da mensagem de resposta deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
expirações Matriz de carimbo de data/hora Sim Novo vencimento do token de bloqueio de mensagem correspondente aos tokens de bloqueio de solicitação.

Mensagem de espreitar

Espreita mensagens sem bloquear.

Pedir

A mensagem de solicitação deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
operation string Sim com.microsoft:peek-message
com.microsoft:server-timeout uint Não Tempo limite do servidor de operação em milissegundos.

O corpo da mensagem de solicitação deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
from-sequence-number long Sim Número de sequência a partir do qual começar a espreitar.
message-count número inteiro Sim Número máximo de mensagens a espreitar.

Response

A mensagem de resposta deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
statusCode número inteiro Sim Código de resposta HTTP [RFC2616]

200: OK – tem mais mensagens

204: Sem conteúdo – sem mais mensagens
statusDescrição string Não Descrição do estado.

O corpo da mensagem de resposta deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
mensagens Lista de mapas Sim Lista de mensagens em que cada mapa representa uma mensagem.

O mapa que representa uma mensagem deve conter as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
mensagem matriz de byte Sim AMQP 1.0 mensagem codificada por fio.

Agendar Mensagem

Programa mensagens. Esta operação suporta transação.

Pedir

A mensagem de solicitação deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
operation string Sim com.microsoft:schedule-message
com.microsoft:server-timeout uint Não Tempo limite do servidor de operação em milissegundos.

O corpo da mensagem de solicitação deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
mensagens Lista de mapas Sim Lista de mensagens em que cada mapa representa uma mensagem.

O mapa que representa uma mensagem deve conter as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
ID da mensagem string Sim amqpMessage.Properties.MessageId como string
ID da sessão string Não amqpMessage.Properties.GroupId as string
chave de partição string Não amqpMessage.MessageAnnotations.”x-opt-partition-key"
via-chave-partição string Não amqpMessage.MessageAnnotations."x-opt-via-partition-key"
mensagem matriz de byte Sim AMQP 1.0 mensagem codificada por fio.

Response

A mensagem de resposta deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
statusCode número inteiro Sim Código de resposta HTTP [RFC2616]

200: OK – sucesso, caso contrário falhou.
statusDescrição string Não Descrição do estado.

O corpo da mensagem de resposta deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
números-sequência matriz de longo Sim Número de sequência de mensagens agendadas. O número de sequência é usado para cancelar.

Cancelar mensagem agendada

Cancela mensagens agendadas.

Pedir

A mensagem de solicitação deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
operation string Sim com.microsoft:cancel-scheduled-message
com.microsoft:server-timeout uint Não Tempo limite do servidor de operação em milissegundos.

O corpo da mensagem de solicitação deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
números-sequência matriz de longo Sim Números de sequência de mensagens agendadas a serem canceladas.

Response

A mensagem de resposta deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
statusCode número inteiro Sim Código de resposta HTTP [RFC2616]

200: OK – sucesso, caso contrário falhou.
statusDescrição string Não Descrição do estado.

Operações de sessão

Bloqueio de renovação de sessão

Estende o bloqueio de uma mensagem pela duração de bloqueio definida na fila ou assinatura.

Pedir

A mensagem de solicitação deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
operation string Sim com.microsoft:renew-session-lock
com.microsoft:server-timeout uint Não Tempo limite do servidor de operação em milissegundos.

O corpo da mensagem de solicitação deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
ID da sessão string Sim ID da Sessão.

Response

A mensagem de resposta deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
statusCode número inteiro Sim Código de resposta HTTP [RFC2616]

200: OK – tem mais mensagens

204: Sem conteúdo – sem mais mensagens
statusDescrição string Não Descrição do estado.

O corpo da mensagem de resposta deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
expiração carimbo de data/hora Sim Novo prazo de validade.

Mensagem da sessão de espreitar

Espreita mensagens de sessão sem bloquear.

Pedir

A mensagem de solicitação deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
operation string Sim com.microsoft:peek-message
com.microsoft:server-timeout uint Não Tempo limite do servidor de operação em milissegundos.

O corpo da mensagem de solicitação deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
de-seqüência-número long Sim Número de sequência a partir do qual começar a espreitar.
contagem de mensagens número inteiro Sim Número máximo de mensagens a espreitar.
ID da sessão string Sim ID da Sessão.

Response

A mensagem de resposta deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
statusCode número inteiro Sim Código de resposta HTTP [RFC2616]

200: OK – tem mais mensagens

204: Sem conteúdo – sem mais mensagens
statusDescrição string Não Descrição do estado.

O corpo da mensagem de resposta deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
mensagens Lista de mapas Sim Lista de mensagens em que cada mapa representa uma mensagem.

O mapa que representa uma mensagem deve conter as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
mensagem matriz de byte Sim AMQP 1.0 mensagem codificada por fio.

Definir Estado da Sessão

Define o estado de uma sessão.

Pedir

A mensagem de solicitação deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
operation string Sim com.microsoft:set-session-state
com.microsoft:server-timeout uint Não Tempo limite do servidor de operação em milissegundos.

O corpo da mensagem de solicitação deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
ID da sessão string Sim ID da Sessão.
estado-sessão matriz de bytes Sim Dados binários opacos.

Response

A mensagem de resposta deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
statusCode número inteiro Sim Código de resposta HTTP [RFC2616]

200: OK – sucesso, caso contrário falhou
statusDescrição string Não Descrição do estado.

Obter estado da sessão

Obtém o estado de uma sessão.

Pedir

A mensagem de solicitação deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
operation string Sim com.microsoft:get-session-state
com.microsoft:server-timeout uint Não Tempo limite do servidor de operação em milissegundos.

O corpo da mensagem de solicitação deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
ID da sessão string Sim ID da Sessão.

Response

A mensagem de resposta deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
statusCode número inteiro Sim Código de resposta HTTP [RFC2616]

200: OK – sucesso, caso contrário falhou
statusDescrição string Não Descrição do estado.

O corpo da mensagem de resposta deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
estado-sessão matriz de bytes Sim Dados binários opacos.

Enumerar sessões

Enumera sessões em uma entidade de mensagens.

Pedir

A mensagem de solicitação deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
operation string Sim com.microsoft:get-message-sessions
com.microsoft:server-timeout uint Não Tempo limite do servidor de operação em milissegundos.

O corpo da mensagem de solicitação deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
última hora de atualização carimbo de data/hora Sim Filtro para incluir apenas sessões atualizadas após um determinado tempo.
skip número inteiro Sim Pule várias sessões.
principal número inteiro Sim Número máximo de sessões.

Nota

Quando você define LastUpdatedTime como DateTime.MaxValue (em .NET), o método Enumerate Sessions retorna todas as sessões, independentemente de terem estado ou não. DateTime.MaxValue no .NET pode não existir em outras linguagens de programação. Nesses casos, use um carimbo de data/hora igual a 253402300800000 milissegundos da Época (1º de janeiro de 1970, 00:00:00 GMT), que é equivalente ao DateTime.MaxValue .NET.

Response

A mensagem de resposta deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
statusCode número inteiro Sim Código de resposta HTTP [RFC2616]

200: OK – tem mais mensagens

204: Sem conteúdo – sem mais mensagens
statusDescrição string Não Descrição do estado.

O corpo da mensagem de resposta deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
skip número inteiro Sim Número de sessões ignoradas se o código de status for 200.
sessões-ids matriz de cadeias Sim Matriz de IDs de sessão se o código de status for 200.

Operações de regra

Adicionar Regra

Pedir

A mensagem de solicitação deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
operation string Sim com.microsoft:add-rule
com.microsoft:server-timeout uint Não Tempo limite do servidor de operação em milissegundos.

O corpo da mensagem de solicitação deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
nome-regra string Sim Nome da regra, não incluindo nomes de assinatura e tópico.
descrição da regra map Sim Descrição da regra, conforme especificado na próxima seção.

O mapa de descrição da regra deve incluir as seguintes entradas, onde sql-filter e correlation-filter são mutuamente exclusivos:

Chave Tipo de valor Necessário Conteúdo do valor
sql-filtro map Sim sql-filter, conforme especificado na secção seguinte.
correlação-filtro map Sim correlation-filter, conforme especificado na secção seguinte.
sql-rule-action map Sim sql-rule-action, conforme especificado na secção seguinte.

O mapa sql-filter deve incluir as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
expressão string Sim Expressão de filtro SQL.

O mapa de filtro de correlação deve incluir pelo menos uma das seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
Correlação-ID string Não
ID da mensagem string Não
para string Não
resposta-a string Não
etiqueta string Não
ID da sessão string Não
ID de resposta à sessão string Não
tipo de conteúdo string Não
propriedades map Não Mapeia para ServiceBusMessage.Properties do Service Bus

O mapa sql-rule-action deve incluir as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
expressão string Sim Expressão de ação SQL.

Response

A mensagem de resposta deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
statusCode número inteiro Sim Código de resposta HTTP [RFC2616]

200: OK – sucesso, caso contrário falhou
statusDescrição string Não Descrição do estado.

Remover regra

Pedir

A mensagem de solicitação deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
operation string Sim com.microsoft:remove-rule
com.microsoft:server-timeout uint Não Tempo limite do servidor de operação em milissegundos.

O corpo da mensagem de solicitação deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
nome-regra string Sim Nome da regra, não incluindo nomes de assinatura e tópico.

Response

A mensagem de resposta deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
statusCode número inteiro Sim Código de resposta HTTP [RFC2616]

200: OK – sucesso, caso contrário falhou
statusDescrição string Não Descrição do estado.

Obter regras

Pedir

A mensagem de solicitação deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
operation string Sim com.microsoft:enumerate-rules
com.microsoft:server-timeout uint Não Tempo limite do servidor de operação em milissegundos.

O corpo da mensagem de solicitação deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
principal número inteiro Sim O número de regras a serem buscadas na página.
skip número inteiro Sim O número de regras a ignorar. Define o índice inicial (+1) na lista de regras.

Response

A mensagem de resposta inclui as seguintes propriedades:

Chave Tipo de valor Necessário Conteúdo do valor
statusCode número inteiro Sim Código de resposta HTTP [RFC2616]

200: OK – sucesso, caso contrário falhou
regras Lista de mapas Sim Lista de regras. Cada regra é representada por um mapa.

Cada entrada de mapa na lista inclui as seguintes propriedades:

Chave Tipo de valor Necessário Conteúdo do valor
descrição da regra objeto descrito Sim com.microsoft:rule-description com o código AMQP descrito 0x0000013700000004

com.microsoft.rule-description em si é uma lista descrita. Tem as seguintes propriedades:

Índice Tipo de valor Necessário Conteúdo do valor
0 lista descrita Sim filter conforme especificado na tabela seguinte.
1 lista descrita Sim ruleAction conforme especificado mais adiante nesta seção.
2 string Sim nome da regra.
3 carimbo de data/hora Sim carimbo de data/hora.

filter pode ser de qualquer um dos seguintes tipos:

Nome do descritor Código do descritor Value
com.microsoft:sql-filter:list 0x000001370000006 Filtro SQL
com.microsoft:correlation-filter:list 0x000001370000009 Filtro de correlação
com.microsoft:true-filter:list 0x000001370000007 Filtro verdadeiro representando 1=1
com.microsoft:false-filter:list 0x000001370000008 Filtro falso representando 1=0

com.microsoft:sql-filter:list é uma lista descrita, que inclui:

Índice Tipo de valor Necessário Conteúdo do valor
0 string Sim Expressão do Filtro SQL
1 número inteiro Sim sempre 20. Este inteiro é o nível de compatibilidade do filtro sql. Ele indica a versão de sintaxe do filtro sql.

com.microsoft:correlation-filter:list é uma lista descrita, que inclui:

Índice (se existir) Tipo de valor Conteúdo do valor
0 string ID de Correlação
1 string ID da mensagem
2 string Para
3 string Responder A
4 string Etiqueta
5 string ID da Sessão
6 string Responder à ID da sessão
7 string Tipo de Conteúdo
8 Mapa Mapa das propriedades definidas pela aplicação

ruleAction pode ser de qualquer um dos seguintes tipos:

Nome do descritor Código do descritor Value
com.microsoft:empty-rule-action:list 0x0000013700000005 Ação de regra vazia - Nenhuma ação de regra presente
com.microsoft:sql-rule-action:list 0x0000013700000006 Ação de regra SQL

com.microsoft:sql-rule-action:list é uma lista descrita que tem dois elementos.

Índice Tipo de valor Necessário Conteúdo do valor
0 string Sim Expressão da ação da regra SQL
1 número inteiro Sim sempre 20. Este inteiro é o nível de compatibilidade do filtro sql. Ele indica a versão de sintaxe do filtro sql.

Operações de mensagens adiadas

Receber por número de sequência

Recebe mensagens adiadas por número de sequência.

Pedir

A mensagem de solicitação deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
operation string Sim com.microsoft:receive-by-sequence-number
com.microsoft:server-timeout uint Não Tempo limite do servidor de operação em milissegundos.

O corpo da mensagem de solicitação deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
números-sequência matriz de longo Sim Números de sequência.
modo receptor-assentamento Ubyte Sim Modo de liquidação do recetor conforme especificado no núcleo AMQP v1.0.

Response

A mensagem de resposta deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
statusCode número inteiro Sim Código de resposta HTTP [RFC2616]

200: OK – sucesso, caso contrário falhou
statusDescrição string Não Descrição do estado.

O corpo da mensagem de resposta deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
mensagens Lista de mapas Sim Lista de mensagens onde cada mapa representa uma mensagem.

O mapa que representa uma mensagem deve conter as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
Lock-token uuid Sim Token de bloqueio se receiver-settle-mode for 1.
mensagem matriz de byte Sim AMQP 1.0 mensagem codificada por fio.

Atualizar status de disposição

Atualiza o status de disposição de mensagens adiadas. Esta operação suporta transações.

Pedir

A mensagem de solicitação deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
operation string Sim com.microsoft:update-disposition
com.microsoft:server-timeout uint Não Tempo limite do servidor de operação em milissegundos.

O corpo da mensagem de solicitação deve consistir em uma seção amqp-value contendo um mapa com as seguintes entradas:

Chave Tipo de valor Necessário Conteúdo do valor
estado de disposição string Sim concluído

abandonado

suspenso
Fichas de bloqueio Matriz de UUID Sim Tokens de bloqueio de mensagem para atualizar o status de descarte.
letra morta-razão string Não Ele é definido se o status de disposição estiver definido como suspenso.
deadletter-descrição string Não Ele é definido se o status de disposição estiver definido como suspenso.
propriedades-para-modificar map Não Lista de propriedades de mensagens intermediadas pelo Service Bus a serem modificadas.

Response

A mensagem de resposta deve incluir as seguintes propriedades do aplicativo:

Chave Tipo de valor Necessário Conteúdo do valor
statusCode número inteiro Sim Código de resposta HTTP [RFC2616]

200: OK – sucesso, caso contrário falhou
statusDescrição string Não Descrição do estado.

Próximos passos

Para saber mais sobre AMQP e Service Bus, visite os seguintes links: