Escriba una aplicación de escucha para una solución de Azure

Este tema describe cómo escribir un aplicación de escucha de la solución de Azure que pueda leer y procesar los mensajes de Microsoft Dataverse que se publican en el Azure Service Bus. Como requisito previo, debería familiarizarse con la manera de escribir un escucha de Azure Service Bus antes de intentar comprender los detalles de un escucha de Dataverse. Para obtener más información, consulte la Documentación del bus de servicio de Azure.

Escribir una escucha de cola

Una cola de mensajes es un repositorio de mensajes recibidos de un extremo de bus de servicio. Un escucha de cola es una aplicación que lee y procesa los mensajes en cola. Puesto que los mensajes de bus de servicio se almacenan en una cola, un escucha no tiene que escuchar activamente para que los mensajes sean recibidos en la cola. Un escucha de cola se puede iniciar una vez que los mensajes han llegado a la cola y seguir procesando los mensajes. Otros tipos de escuchas descritos en la siguiente sección deben escuchar activamente o perderán la oportunidad de leer un mensaje. Estos mensajes se pueden originar desde Dataverse o en algún otro origen.

Importante

Al escribir un escucha de cola, compruebe cada acción del encabezado del mensaje para determinar si el mensaje se originó desde Dataverse. Para más información sobre cómo hacer esto, consulte Filtro de mensajes.

Puede hacer una lectura destructiva del mensaje usando Recibir en modo ReceiveMode.ReceiveAndDelete, donde el mensaje se lee y se quita de la cola, o una lectura no destructiva con el modo ReceiveMode.PeekLock, donde el mensaje se lee, pero se mantiene en la cola. Para obtener más información acerca de la lectura de mensajes desde una cola, consulte Cómo recibir mensajes de una cola.

Un tema es similar a una cola, pero implementa un modelo de publicación o suscripción. Puede haber uno o varios escuchas suscritos al tema que reciben mensajes de su cola. Más información: Colas, temas y suscripciones

Importante

Para usar estos contratos de cola o tema, debe especificar sus aplicaciones de escucha mediante el SDK de Azure versión 1.7 o posterior.

El uso de colas y temas en el diseño de software multisistema puede dar lugar al desemparejamiento del sistema. Si la aplicación de escucha llega a estar no disponible, la entrega del mensaje de Dataverse se realizará correctamente y la aplicación de escucha podrá seguir procesando el mensaje de la cola cuando vuelva a estar en línea. Más información: Colas, temas y suscripciones

Escribir un escucha unidireccional, bidireccional o REST

Además de la escucha de cola descrita anteriormente, puede escribir un escucha para otros tres contratos de bus de servicio admitidos por Dataverse: unidireccional, bidireccional y REST. Un módulo de escucha unidireccional puede leer y procesar un mensaje publicado en el bus de servicio. Un módulo de escucha bidireccional puede hacer lo mismo, pero también puede devolver una cadena de información a Dataverse. Un escucha REST es la misma que la escucha bidireccional, salvo que trabaja con un extremo REST . Tenga en cuenta que estos escuchas deben escuchar activamente en un extremo de servicio para leer un mensaje enviado sobre el bus de servicio. Si el escucha no está escuchando cuando Dataverse intenta publicar un mensaje en el bus de servicio, el mensaje no se enviará.

La escritura de un escucha está estructurada sobre lo que en inglés se conoce como ABC: dirección, enlace y contrato.

Módulo de escucha unidireccional

Una vez registrado el escucha con un extremo, el método Execute del escucha se invoca siempre que Dataverse publique un mensaje en el bus de servicio. El método Execute no devuelve los datos de la llamada del método. Para obtener más información, consulte el ejemplo de escucha unidireccional, Ejemplo: escucha unidireccional.

Módulo de escucha bidireccional

Para este contrato bidireccional, el método Execute devuelve una cadena de llamada del método. Para obtener más información, consulte el ejemplo de escucha bidireccional, Ejemplo: escucha bidireccional.

Escucha de REST

Para el contrato de REST, el método Execute devuelve una cadena de la llamada al método. Para obtener más información, consulte el ejemplo de escucha REST, Ejemplo: escucha REST. Tenga en cuenta que en el ejemplo de escucha REST, se crea una instancia de WebServiceHost y no un ServiceHost como se hizo en el ejemplo bidireccional.

Nota

Al usar el complemento predefinido (ServiceBusPlugin) con una escucha REST bidireccional, el complemento no usa los datos de cadena devueltos desde el escucha. Sin embargo, un complemento personalizado basado en Azure podría usar esta información.

Al trabajar con ejemplos de escucha, el secreto de emisor que se le solicitará que escriba es la clave de administración de Azure Service Bus. El enlace de federación HTTP WS2007 usa el modo token y el protocolo WS-Trust 1.3.

Mensajes de filtro

Hay un contenedor de propiedades con información adicional agregado a la propiedad Propiedades de cada mensaje negociado enviado desde Dataverse. El contenedor de propiedades, disponibles con extremos de cola, retransmisión y contrato de tema, contiene la siguiente información:

  • Dirección URI de la organización
  • Id. de usuario que llama
  • Iniciando Id. de usuario
  • Nombre lógico de la tabla
  • Nombre de solicitud

Esta información identifica la organización, el usuario, la tabla y la solicitud de mensajes que está procesando Dataverse y que han causado la publicación de un mensaje de bus de servicio. La disponibilidad de esas propiedades indica que el mensaje se envió desde Dataverse. El código de escucha puede decidir cómo procesar el mensaje según esos valores.

Leer el contexto de los datos en varios formatos de datos

El contexto de datos de la operación de Dataverse actual se pasa a la aplicación de escucha de la solución de Azure en el cuerpo de un mensaje del bus de servicio. En versiones anteriores, sólo se admitía un formato binario .NET. Para la interoperabilidad multiplataforma (no .NET), ahora puede especificar uno de los tres formatos de datos para el cuerpo del mensaje: binario .NET, JSON, o XML. Este formato se especifica en la columna MessageFormat de la Tabla ServiceEndpoint.

Al recibir mensajes, la aplicación de escucha puede leer el contexto de datos en el cuerpo del mensaje según el contentType del mensaje. El código de ejemplo para hacerlo se muestra a continuación.

var receivedMessage = inboundQueueClient.Receive(TimeSpan.MaxValue);  
  
if (receivedMessage.ContentType == "application/msbin1")  
{  
    RemoteExecutionContext context = receivedMessage.GetBody<RemoteExecutionContext>();  
}  
else if (receivedMessage.ContentType == "application/json")  
{  
    //string jsonBody = new StreamReader(receivedMessage.GetBody<Stream>(), Encoding.UTF8).ReadToEnd();  
    RemoteExecutionContext contextFromJSON = receivedMessage.GetBody<RemoteExecutionContext>(  
        new DataContractJsonSerializer(typeof(RemoteExecutionContext)));  
}  
else if (receivedMessage.ContentType == "application/xml")  
{  
    //string xmlBody = new StreamReader(receivedMessage.GetBody<Stream>(), Encoding.UTF8).ReadToEnd();  
    RemoteExecutionContext contextFromXML = receivedMessage.GetBody<RemoteExecutionContext>(  
        new DataContractSerializer(typeof(RemoteExecutionContext)));  
}  

Consultar también

Extensiones de Azure
Escribir un complemento con Azure personalizado
Ejemplo: módulo de escucha unidireccional
Ejemplo: escucha bidireccional
Ejemplo: agente de escucha de REST
Trabajar con datos Dataverse en la solución de Azure
Trabajar con datos Dataverse de eventos en la solución del Centro de eventos de Azure

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).