Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se describe cómo escribir una aplicación de agente de escucha de soluciones de Azure que puede leer los mensajes de Microsoft Dataverse publicados en Azure Service Bus. Como requisito previo, debe familiarizarse con cómo escribir un agente de escucha de Azure Service Bus antes de intentar aprender los detalles de un agente de escucha de Dataverse. Para más información, consulte la documentación de Azure Service Bus.
Escribir una escucha de cola
Una cola de mensajes es un repositorio de mensajes recibidos en un punto de conexión del Service Bus. Un agente de escucha de cola es una aplicación que lee y procesa estos 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 agente de escucha de cola después de que los mensajes lleguen a la cola y aún así procesar esos mensajes. Otros tipos de agentes de escucha que se describen en la sección siguiente deben estar escuchando activamente o perderán la oportunidad de leer un mensaje. Estos mensajes pueden originarse desde Dataverse o desde 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 obtener información sobre cómo hacerlo, vea Filtrar mensajes.
Puede hacer una lectura destructiva de mensajes mediante Receive en el modo ReceiveMode.ReceiveAndDelete, donde el mensaje se lee y quita de la cola, o una lectura no destructiva mediante el modo ReceiveMode.PeekLock, donde el mensaje se lee pero sigue disponible en la cola. Para obtener más información sobre cómo leer mensajes de 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 de mensajes de Dataverse sigue funcionando correctamente y la aplicación de escucha puede continuar procesando el mensaje de 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 agente de escucha de cola descrito anteriormente, puede escribir un agente de escucha para otros tres contratos de Service Bus admitidos por Dataverse: unidireccional, bidireccional y REST. Un agente de escucha unidireccional puede leer y procesar un mensaje publicado en el Service Bus. Un módulo de escucha bidireccional puede hacer lo mismo, pero también puede devolver una cadena de información a Dataverse. Un agente de escucha REST es el mismo que el agente de escucha bidireccional, salvo que funciona con un punto de conexión REST. Tenga en cuenta que estos oyentes deben estar escuchando activamente en un punto de conexión de servicio para leer un mensaje enviado a través del Service Bus. Si el agente de escucha no está escuchando cuando Dataverse intenta publicar un mensaje en Service Bus, no se enviará el mensaje.
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
Vinculación: WS2007HttpRelayBinding
Contrato: IServiceEndpointPlugin
Una vez registrado el agente de escucha con un extremo, el método Execute del agente escucha se invoca siempre que Dataverse publique un mensaje en el Service Bus. El Execute método no devuelve ningún dato de la llamada al método . Para obtener más información, consulte el ejemplo de agente de escucha unidireccional, Ejemplo: agente de escucha unidireccional.
Módulo de escucha bidireccional
Dirección: URI de servicio
Vinculación: WS2007HttpRelayBinding
Contrato: ITwoWayServiceEndpointPlugin
Para este contrato bidireccional, el Execute método devuelve una cadena de la llamada al método . Para obtener más información, consulte el ejemplo de agente de escucha bidireccional, Sample: Two-way listener(Ejemplo: agente de escucha bidireccional).
Escucha de REST
Dirección: URI de servicio
Enlace: WebHttpRelayBinding
Contrato: IWebHttpServiceEndpointPlugin
Para el contrato REST, el Execute método devuelve una cadena de la llamada al método . Consulte el ejemplo de agente de escucha REST, Ejemplo: agente de escucha REST para obtener más información. Tenga en cuenta que, en el ejemplo del agente de escucha REST, se instancia un WebServiceHost y no un ServiceHost como se hizo en el ejemplo bidireccional.
Nota:
Al usar el complemento de punto de conexión de servicio predefinido (ServiceBusPlugin) con un agente de escucha REST bidireccional, el complemento no usa los datos de cadena devueltos desde el agente de escucha. Sin embargo, un complemento personalizado compatible con 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 HTTP de federación WS2007 usa el modo token y el protocolo WS-Trust 1.3.
Filtrar mensajes
Hay un contenedor de propiedades con información adicional agregado a la propiedad Propiedades de cada mensaje asincrónico enviado desde Dataverse. El contenedor de propiedades, disponibles con extremos de cola, retransmisión y contrato de tema, contiene la siguiente información:
- URI de la organización
- Llamar al identificador de usuario
- Inicio del identificador de usuario
- Nombre lógico de tabla de datos
- Nombre de solicitud
Esta información identifica la organización, el usuario, la tabla y la solicitud de mensaje que está procesando Dataverse, lo que dio lugar a que se publique el mensaje de Service Bus. La disponibilidad de estas propiedades indica que el mensaje se envió desde Dataverse. El código del agente de escucha puede decidir cómo procesar el mensaje en función de estos valores.
Leer el contexto de datos en varios formatos de datos
El contexto de datos de la operación de Dataverse actual se pasa a la aplicación de agente de escucha de la solución de Azure en el cuerpo de un mensaje de Service Bus. En versiones anteriores, solo se admitía un formato binario de .NET. Para la interoperabilidad multiplataforma (non-.NET), ahora puede especificar uno de los tres formatos de datos para el cuerpo del mensaje: .NET Binary, 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 en función del contentType 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
Escritura de un complemento personalizado compatible con Azure
Ejemplo: escucha unidireccional
Ejemplo: escucha bidireccional
Ejemplo: agente de escucha REST
Uso de datos de Dataverse en la solución de Azure
Uso de datos de eventos de Dataverse en la solución de Azure Event Hubs