Compartir vía


El protocolo AMQP 1.0 de Microsoft Azure Service Bus: operaciones de respuesta/solicitud

En este artículo se define la lista de operaciones de respuesta/solicitud de Microsoft Azure Service Bus. Esta información se basa en la versión 1.0 de Administración de AMQP (fase de borrador).

Si desea obtener una guía detallada a nivel de conexión del protocolo AMQP 1.0, que describe cómo Service Bus se implementa y se basa en la especificación técnica de OASIS AMQP, consulte la Guía del protocolo AMQP 1.0 en Service Bus de Azure y Event Hubs.

Conceptos

ServiceBusReceivedMessage / ServiceBusMessage

Representa un mensaje de Service Bus que se asigna a un mensaje de AMQP. La asignación se define en la guía del protocolo AMQP de Service Bus.

Asociación al nodo de administración de entidades

Todas las operaciones descritas en este documento siguen un patrón de solicitud/respuesta, se limitan a una entidad y requieren asociarse a un nodo de administración de entidades.

Crea un vínculo al nodo de administración para enviar solicitudes.

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

Crea un vínculo para recibir respuestas del nodo de administración.

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

Transferencia de un mensaje de solicitud

Transfiere un mensaje de solicitud.
Para las operaciones que admiten transacciones se puede agregar un estado de transacción.

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>
        }
)

Recepción de un mensaje de respuesta

Recibe el mensaje de respuesta del vínculo de respuesta.

responseMessage = responseLink.receiveTransfer()

El mensaje de respuesta está en el formato siguiente:

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

Dirección de entidades de Service Bus

Las direcciones de las entidades de Service Bus deben tener el siguiente formato:

Tipo de entidad Dirección Ejemplo
cola <queue_name> “myQueue”

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

“site2/page1/myQueue”
subscription <topic_name>/Subscriptions/<subscription_name> “myTopic/Subscriptions/MySub”

Operaciones de mensajes

Bloqueo de renovación de mensajes

Extiende el bloqueo de un mensaje según la duración de bloqueo establecida en la cola o suscripción.

Request

El mensaje de solicitud debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
operation string com.microsoft:renew-lock
com.microsoft:server-timeout uint No Tiempo de espera de funcionamiento del servidor en milisegundos.

El cuerpo del mensaje de solicitud debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
lock-tokens Matriz de UUID Tokens de bloqueo de renovación de mensajes.

Nota

El token de bloqueo aquí hace referencia a la propiedad delivery-tag en el mensaje AMQP recibido. Si recibió un mensaje aplazado y quiere renovar su bloqueo, use la propiedad lock-token en el mensaje, en lugar de delivery-tag.

Response

El mensaje de respuesta debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
statusCode int Código de respuesta HTTP [RFC2616]

200: operación realizada correctamente; en caso contrario, significa que se ha producido un error.
statusDescription string No Descripción del estado.

El cuerpo del mensaje de respuesta debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
expirations Matriz de marca de tiempo Nueva expiración de tokenes de bloqueo de mensajes correspondientes a los tokens de bloqueo de solicitudes.

Inspección de mensajes

Inspecciona los mensajes sin bloquearlos.

Request

El mensaje de solicitud debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
operation string com.microsoft:peek-message
com.microsoft:server-timeout uint No Tiempo de espera de funcionamiento del servidor en milisegundos.

El cuerpo del mensaje de solicitud debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
from-sequence-number long Número de secuencia desde la que se iniciará la inspección.
message-count int Número máximo de mensajes que se inspeccionarán.

Response

El mensaje de respuesta debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
statusCode int Código de respuesta HTTP [RFC2616]

200: operación realizada correctamente; hay más mensajes.

204: sin contenido; no hay más mensajes
statusDescription string No Descripción del estado.

El cuerpo del mensaje de respuesta debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
messages Lista de asignaciones Lista de mensajes en el que cada asignación representa un mensaje.

La asignación que representa un mensaje debe contener las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
message Matriz de byte Mensaje codificado con AMQP 1.0.

Programación de mensajes

Programa mensajes. Esta operación admite transacciones.

Request

El mensaje de solicitud debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
operation string com.microsoft:schedule-message
com.microsoft:server-timeout uint No Tiempo de espera de funcionamiento del servidor en milisegundos.

El cuerpo del mensaje de solicitud debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
messages Lista de asignaciones Lista de mensajes en el que cada asignación representa un mensaje.

La asignación que representa un mensaje debe contener las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
message-id string amqpMessage.Properties.MessageId como cadena
session-id string No amqpMessage.Properties.GroupId as string
partition-key string No amqpMessage.MessageAnnotations.”x-opt-partition-key"
Mediante una clave de partición string No amqpMessage.MessageAnnotations."x-opt-via-partition-key"
message Matriz de byte Mensaje codificado con AMQP 1.0.

Response

El mensaje de respuesta debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
statusCode int Código de respuesta HTTP [RFC2616]

200: operación realizada correctamente; en caso contrario, significa que se ha producido un error.
statusDescription string No Descripción del estado.

El cuerpo del mensaje de respuesta debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
sequence-numbers Matriz de long Número de secuencia de los mensajes programados. El número de secuencia se utiliza para realizar cancelaciones.

Cancelación de mensajes programados

Cancela mensajes programados.

Request

El mensaje de solicitud debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
operation string com.microsoft:cancel-scheduled-message
com.microsoft:server-timeout uint No Tiempo de espera de funcionamiento del servidor en milisegundos.

El cuerpo del mensaje de solicitud debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
sequence-numbers Matriz de long Números de secuencia de mensajes programados que se van a cancelar.

Response

El mensaje de respuesta debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
statusCode int Código de respuesta HTTP [RFC2616]

200: operación realizada correctamente; en caso contrario, significa que se ha producido un error.
statusDescription string No Descripción del estado.

Operaciones de sesiones

Bloqueo de renovación de sesiones

Extiende el bloqueo de un mensaje según la duración de bloqueo establecida en la cola o suscripción.

Request

El mensaje de solicitud debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
operation string com.microsoft:renew-session-lock
com.microsoft:server-timeout uint No Tiempo de espera de funcionamiento del servidor en milisegundos.

El cuerpo del mensaje de solicitud debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
session-id string Id. de sesión.

Response

El mensaje de respuesta debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
statusCode int Código de respuesta HTTP [RFC2616]

200: operación realizada correctamente; hay más mensajes.

204: sin contenido; no hay más mensajes
statusDescription string No Descripción del estado.

El cuerpo del mensaje de respuesta debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
expiration timestamp Nueva expiración.

Inspección de mensajes de sesiones

Inspecciona mensajes de sesiones sin bloquear.

Request

El mensaje de solicitud debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
operation string com.microsoft:peek-message
com.microsoft:server-timeout uint No Tiempo de espera de funcionamiento del servidor en milisegundos.

El cuerpo del mensaje de solicitud debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
from-sequence-number long Número de secuencia desde la que se iniciará la inspección.
message-count int Número máximo de mensajes que se inspeccionarán.
session-id string Id. de sesión.

Response

El mensaje de respuesta debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
statusCode int Código de respuesta HTTP [RFC2616]

200: operación realizada correctamente; hay más mensajes.

204: sin contenido; no hay más mensajes
statusDescription string No Descripción del estado.

El cuerpo del mensaje de respuesta debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
messages Lista de asignaciones Lista de mensajes en el que cada asignación representa un mensaje.

La asignación que representa un mensaje debe contener las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
message Matriz de byte Mensaje codificado con AMQP 1.0.

Establecimiento del estado de sesiones

Establece el estado de una sesión.

Request

El mensaje de solicitud debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
operation string com.microsoft:set-session-state
com.microsoft:server-timeout uint No Tiempo de espera de funcionamiento del servidor en milisegundos.

El cuerpo del mensaje de solicitud debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
session-id string Id. de sesión.
session-state Matriz de bytes Datos binarios opacos.

Response

El mensaje de respuesta debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
statusCode int Código de respuesta HTTP [RFC2616]

200: operación realizada correctamente; en caso contrario, significa que se ha producido un error.
statusDescription string No Descripción del estado.

Obtención del estado de sesiones

Obtiene el estado de una sesión.

Request

El mensaje de solicitud debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
operation string com.microsoft:get-session-state
com.microsoft:server-timeout uint No Tiempo de espera de funcionamiento del servidor en milisegundos.

El cuerpo del mensaje de solicitud debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
session-id string Id. de sesión.

Response

El mensaje de respuesta debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
statusCode int Código de respuesta HTTP [RFC2616]

200: operación realizada correctamente; en caso contrario, significa que se ha producido un error.
statusDescription string No Descripción del estado.

El cuerpo del mensaje de respuesta debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
session-state Matriz de bytes Datos binarios opacos.

Enumeración de sesiones

Enumera las sesiones de una entidad de mensajería.

Request

El mensaje de solicitud debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
operation string com.microsoft:get-message-sessions
com.microsoft:server-timeout uint No Tiempo de espera de funcionamiento del servidor en milisegundos.

El cuerpo del mensaje de solicitud debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
last-updated-time timestamp Filtro para incluir solo las sesiones actualizadas después de un momento dado.
skip int Omite un número de sesiones.
top int Número máximo de sesiones.

Nota:

Cuando se estableceLastUpdatedTime en DateTime.MaxValue (en .NET), el método Enumerar sesiones devuelve todas las sesiones, tengan o no estado. DateTime.MaxValue en .NET pueden no existir en otros lenguajes de programación. En tales casos, utilice una marca de tiempo que sea igual a 253402300800000 milisegundos de la Época (1 de enero de 1970, 00:00:00 GMT), que es equivalente a DateTime.MaxValue en .NET.

Respuesta

El mensaje de respuesta debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
statusCode int Código de respuesta HTTP [RFC2616]

200: operación realizada correctamente; hay más mensajes.

204: sin contenido; no hay más mensajes
statusDescription string No Descripción del estado.

El cuerpo del mensaje de respuesta debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
skip int Número de sesiones omitidas si el código de estado es 200.
sessions-ids Matriz de cadenas Matriz de identificadores de sesiones si el código de estado es 200.

Operaciones de regla

Agregar regla

Request

El mensaje de solicitud debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
operation string com.microsoft:add-rule
com.microsoft:server-timeout uint No Tiempo de espera de funcionamiento del servidor en milisegundos.

El cuerpo del mensaje de solicitud debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
rule-name string Nombre de la regla, sin incluir los nombres de las suscripciones y los temas.
rule-description map Descripción de la regla tal y como se especifica en la sección siguiente.

La asignación rule-description debe incluir las siguientes entradas, donde sql-filter y correlation-filter son mutuamente excluyentes:

Clave Tipo de valor Obligatorio Contenido del valor
sql-filter map sql-filter, tal y como se especifica en la sección siguiente.
correlation-filter map correlation-filter, tal y como se especifica en la sección siguiente.
sql-rule-action map sql-rule-action, tal y como se especifica en la sección siguiente.

La asignación sql-filter debe incluir las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
expresión string Expresión de filtro SQL.

La asignación correlation-filter debe incluir, al menos, una de las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
correlation-id string No
message-id string No
to string No
reply-to string No
etiqueta string No
session-id string No
reply-to-session-id string No
content-type string No
properties mapa No Se asigna a Service Bus ServiceBusMessage.Properties

La asignaciónsql-rule-action debe incluir las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
expresión string Expresión de acción SQL.

Response

El mensaje de respuesta debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
statusCode int Código de respuesta HTTP [RFC2616]

200: operación realizada correctamente; en caso contrario, significa que se ha producido un error.
statusDescription string No Descripción del estado.

Eliminación de reglas

Request

El mensaje de solicitud debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
operation string com.microsoft:remove-rule
com.microsoft:server-timeout uint No Tiempo de espera de funcionamiento del servidor en milisegundos.

El cuerpo del mensaje de solicitud debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
rule-name string Nombre de la regla, sin incluir los nombres de las suscripciones y los temas.

Response

El mensaje de respuesta debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
statusCode int Código de respuesta HTTP [RFC2616]

200: operación realizada correctamente; en caso contrario, significa que se ha producido un error.
statusDescription string No Descripción del estado.

Obtener reglas

Request

El mensaje de solicitud debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
operation string com.microsoft:enumerate-rules
com.microsoft:server-timeout uint No Tiempo de espera de funcionamiento del servidor en milisegundos.

El cuerpo del mensaje de solicitud debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
top int El número de reglas que se capturan en la página.
skip int El número de reglas que se omiten. Define el índice inicial (+ 1) en la lista de reglas.

Response

El mensaje de respuesta incluye las siguientes propiedades:

Clave Tipo de valor Obligatorio Contenido del valor
statusCode int Código de respuesta HTTP [RFC2616]

200: operación realizada correctamente; en caso contrario, significa que se ha producido un error.
reglas Lista de asignaciones Lista de reglas. Cada regla se representa mediante un mapa.

Cada entrada de mapa de la lista incluye las siguientes propiedades:

Clave Tipo de valor Obligatorio Contenido del valor
rule-description objeto descrito com.microsoft:rule-description con el código descrito de AMQP 0x0000013700000004

com.microsoft.rule-description se trata de una lista descrita. Tiene las siguientes propiedades:

Índice Tipo de valor Obligatorio Contenido del valor
0 lista descrita filter tal y como se especifica en la tabla siguiente.
1 lista descrita ruleAction tal y como se especifica más adelante en esta sección.
2 string nombre de la regla.
3 timestamp marca de tiempo.

filter puede ser de uno de los siguientes tipos:

Nombre de descriptor Código de descriptor Value
com.microsoft:sql-filter:list 0x000001370000006 Filtro SQL
com.microsoft:correlation-filter:list 0x000001370000009 Filtro de correlación
com.microsoft:true-filter:list 0x000001370000007 Filtro true que representa 1 = 1
com.microsoft:false-filter:list 0x000001370000008 Filtro false que representa 1 = 0

com.microsoft:sql-filter:list es una lista descrita que incluye:

Índice Tipo de valor Obligatorio Contenido del valor
0 string Expresión de filtro SQL
1 int siempre 20. Este entero es el nivel de compatibilidad del filtro SQL. Indica la versión de sintaxis del filtro SQL.

com.microsoft:correlation-filter:list es una lista descrita que incluye:

Índice (si existe) Tipo de valor Contenido del valor
0 string Id. de correlación
1 string Id. del mensaje
2 string En
3 string Responder a
4 string Etiqueta
5 string Identificador de sesión
6 string Respuesta a identificador de sesión
7 string Tipo de contenido
8 Map Mapa de propiedades definidas por la aplicación

ruleAction puede ser cualquiera de los siguientes tipos:

Nombre de descriptor Código de descriptor Value
com.microsoft:empty-rule-action:list 0x0000013700000005 Acción de regla vacía: no hay existe ninguna acción de regla
com.microsoft:sql-rule-action:list 0x0000013700000006 Acción de regla SQL

com.microsoft:sql-rule-action:list es una lista descrita que tiene dos elementos.

Índice Tipo de valor Obligatorio Contenido del valor
0 string Expresión de la acción de regla SQL
1 int siempre 20. Este entero es el nivel de compatibilidad del filtro SQL. Indica la versión de sintaxis del filtro SQL.

Operaciones de mensajes diferidos

Recepción por número de secuencia

Recibe mensajes diferidos por número de secuencia.

Request

El mensaje de solicitud debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
operation string com.microsoft:receive-by-sequence-number
com.microsoft:server-timeout uint No Tiempo de espera de funcionamiento del servidor en milisegundos.

El cuerpo del mensaje de solicitud debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
sequence-numbers Matriz de long Número de secuencias.
receiver-settle-mode ubyte Modo de liquidación de receptor tal y como se especifica en AMQP Core 1.0.

Response

El mensaje de respuesta debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
statusCode int Código de respuesta HTTP [RFC2616]

200: operación realizada correctamente; en caso contrario, significa que se ha producido un error.
statusDescription string No Descripción del estado.

El cuerpo del mensaje de respuesta debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
messages Lista de asignaciones Lista de mensajes donde cada asignación representa un mensaje.

La asignación que representa un mensaje debe contener las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
lock-token uuid Token de bloqueo si el valor de receiver-settle-mode es 1.
message Matriz de byte Mensaje codificado con AMQP 1.0.

Actualización del estado de disposición

Actualiza el estado de disposición de los mensajes diferidos. Esta operación admite transacciones.

Request

El mensaje de solicitud debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
operation string com.microsoft:update-disposition
com.microsoft:server-timeout uint No Tiempo de espera de funcionamiento del servidor en milisegundos.

El cuerpo del mensaje de solicitud debe constar de una sección con el valor de AMQP que contiene una asignación con las siguientes entradas:

Clave Tipo de valor Obligatorio Contenido del valor
disposition-status string completed

abandoned

suspended
lock-tokens Matriz de UUID Tokens de bloqueo de mensajes para actualizar el estado de disposición.
deadletter-reason string No Puede establecerse si el estado de disposición es suspended.
deadletter-description string No Puede establecerse si el estado de disposición es suspended.
properties-to-modify mapa No Lista de propiedades de mensajes asincrónicos de Service Bus que se van a modificar.

Response

El mensaje de respuesta debe incluir las siguientes propiedades de la aplicación:

Clave Tipo de valor Obligatorio Contenido del valor
statusCode int Código de respuesta HTTP [RFC2616]

200: operación realizada correctamente; en caso contrario, significa que se ha producido un error.
statusDescription string No Descripción del estado.

Pasos siguientes

Para obtener más información sobre AMQP y Service Bus, visite los siguientes vínculos: