Creación de aplicaciones de Service Broker

En esta sección se proporciona información general de la estructura de una aplicación de Service Broker, se muestran algunas de las estrategias más comunes para iniciar una aplicación que utiliza Service Broker y se describen los pasos básicos para recibir y procesar los mensajes.

La aplicación para un servicio iniciador utiliza la instrucción BEGIN DIALOG para especificar la información sobre los servicios en cada punto final y el contrato de servicios que la aplicación utilizará para comunicarse. La aplicación utiliza la instrucción SEND para enviar el primer mensaje de la conversación al servicio de destino. La aplicación debe estar preparada para recibir y procesar los mensajes de Service Broker, aun cuando el contrato no permita al servicio de destino devolver los mensajes. La aplicación iniciadora se implementa a menudo como dos componentes independientes. Un componente comienza la conversación; el otro componente procesa los mensajes que llegan a la cola.

La aplicación para un servicio de destino recibe y procesa los mensajes del servicio iniciador. La aplicación también debe estar preparada para recibir y procesar los mensajes de Service Broker.

En función de las necesidades del servicio, la parte de la aplicación que procesa la cola se puede iniciar de varias maneras diferentes. Para obtener más información acerca de cómo iniciar una aplicación que utilice Service Broker, vea Elegir una estrategia de inicio.

Independientemente de cómo se inicie, la aplicación comienza una transacción y utiliza la instrucción RECEIVE para quitar un mensaje de la cola. La aplicación extrae los datos de los mensajes y realiza cualquier procesamiento necesario. Si es necesario, la aplicación utiliza la instrucción SEND para enviar los mensajes al otro lado de la conversación. A continuación, la aplicación confirma la transacción. Para una mayor eficacia, la aplicación puede procesar varios mensajes dentro de la misma transacción. Los servicios que mantienen un estado utilizan a menudo la instrucción GET CONVERSATION GROUP para bloquear un grupo de conversación, recuperar el estado del grupo de conversación y, a continuación, procesar varios mensajes para el grupo de conversación.

La conversación continúa, utilizando instrucciones SEND y RECEIVE para transmitir los mensajes entre los puntos finales. En cualquier momento, si es necesario, cualquier participante en la conversación puede utilizar BEGIN DIALOG para iniciar una conversación con otro servicio para obtener información adicional. Por ejemplo, una aplicación que está procesando una notificación de eventos puede iniciar otra conversación con un servicio que proporciona información del personal para recuperar la información de contacto actual antes de enviar una alerta.

Cuando la conversación haya logrado su propósito, la aplicación en el punto final adecuado utilizará la instrucción END CONVERSATION para finalizar la conversación. El otro participante recibe el mensaje END CONVERSATION y emite también un mensaje END CONVERSATION en su lado. Cuando ambos participantes han emitido los mensajes END CONVERSATION, la conversación finaliza.

Si se produce un error, un participante en la conversación puede indicar el error finalizando la conversación con la cláusula WITH ERROR. Con la cláusula WITH ERROR se finaliza la conversación y se envía un mensaje de error de Service Broker al otro participante en la conversación.

Si Service Broker detecta un error o expira la vigencia de la conversación, Service Broker finaliza la conversación y devuelve un mensaje de error a los participantes activos. Si Service Broker no puede establecer una conversación, el único participante activo es la aplicación iniciadora y el error se entrega al servicio iniciador. Si un participante ya ha finalizado la conversación, el mensaje de error se entrega al otro participante. De lo contrario, el error se entrega a ambos participantes en la conversación.

En esta sección