Escriba una aplicación de escucha para una solución de Azure
Este tema describe cómo escribir una aplicación de escucha de soluciones de Azure que pueda leer Microsoft Dataverse mensajes publicados en 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. Se puede iniciar un escucha de cola después de que los mensajes llegan a la cola y aún así procesar esos mensajes. Otros tipos de oyentes discutidos en la siguiente sección deben estar escuchando 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 realizar una lectura destructiva del mensaje utilizando el modo Receive en ReceiveMode.ReceiveAndDelete , donde el mensaje se lee y se elimina de la cola, o una lectura no destructiva utilizando el modo ReceiveMode.PeekLock , donde el mensaje se lee pero aún está disponible 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 alguna vez deja de estar disponible, la entrega del mensaje desde Dataverse aún se realiza correctamente y la aplicación de escucha puede continuar procesando el mensaje de la cola cuando vuelve a estar en línea. Más información: Colas, temas y suscripciones
Escribir un escucha unidireccional, bidireccional o REST
Además del escucha de cola descrito anteriormente, puede escribir un escucha para otros tres contratos de Service Bus compatibles con 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
Dirección: URI de servicio
Enlace: WS2007HttpRelayBinding
Contrato: IServiceEndpointPlugin
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
Dirección: URI de servicio
Enlace: WS2007HttpRelayBinding
Contrato: ITwoWayServiceEndpointPlugin
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
Dirección: URI de servicio
Enlace: WebHttpRelayBinding
Contrato: IWebHttpServiceEndpointPlugin
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 utilizar el complemento de servicio listo para usar punto de conexión con un escucha bidireccional o REST, el complemento no utiliza ningún dato de cadena devuelto por 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 una bolsa de propiedades con información adicional agregada a cada mensaje negociado Propiedades propiedad enviada 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, su aplicación de escucha puede leer el contexto de datos en el cuerpo del mensaje en función del tipo de contenido del mensaje, como se muestra en el ejemplo de código.
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)));
}
Consulte 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).