Creación de objetos de Service Broker

Una aplicación utiliza Service Broker ejecutando las instrucciones Transact-SQL que funcionan en objetos de Service Broker definidos en una base de datos. Esta sección describe las consideraciones generales a la hora de crear los objetos de Service Broker para una aplicación.

Introducción

Los objetos de Service Broker definen los metadatos y el almacenamiento para un conjunto concreto de tareas:

  • Los tipos de mensaje definen los datos que se intercambian en una conversación.

  • Los contratos definen las tareas. Cada contrato especifica los tipos de mensaje que se pueden utilizar en una conversación determinada y qué lado de la conversación puede enviar el mensaje.

  • Una cola almacena los mensajes entrantes de un servicio.

  • Un servicio representa un conjunto relacionado de tareas empresariales. El nombre del servicio también se utiliza para buscar la cola para el servicio.

Observe que un contrato depende de uno o más tipos de mensaje. Un servicio depende de una cola y puede depender de uno o más contratos. Por tanto, los contratos se crean después de los tipos de mensaje y se quitan antes de los tipos de mensaje. Los servicios se crean después de las colas y los contratos y se quitan antes de las colas y los contratos.

Creación de objetos para un servicio

El procedimiento para crear un servicio sigue el mismo procedimiento básico independientemente de si el servicio es un servicio iniciador, un servicio de destino o ambos.

La definición de un servicio especifica los contratos para los que el servicio puede ser un destino. Por contra, una aplicación puede utilizar un servicio para iniciar una conversación que utiliza cualquier contrato definido en la base de datos. Service Broker toma este enfoque para aplicar la regla general de que un servicio sólo debería recibir mensajes que la aplicación pueda procesar. Para asegurarse de que la aplicación no recibe mensajes de un tipo arbitrario o desconocido, Service Broker sólo acepta un nuevo diálogo si el diálogo sigue un contrato especificado en el servicio. Un servicio iniciador especifica el contrato que se utilizará cuando comienza la conversación, de modo que un servicio iniciador no necesite incluir el contrato en la definición de servicio.

Para crear los objetos para un servicio, haga el siguiente:

  1. Cree los tipos de mensaje que definen los mensajes que utilizará su servicio para lograr cualquier comunicación necesaria. Puede definir estos tipos u obtener los scripts para crear los tipos a partir del creador del servicio con el que se comunicará su servicio. Puede omitir este paso si la base de datos ya contiene los tipos de mensaje que su servicio necesita.

  2. Cree uno o más contratos que definan la estructura de las conversaciones en las que este servicio puede participar. Puede definir este contrato u obtener los scripts para crear el contrato a partir del creador del servicio con el que se comunicará su servicio. Puede omitir este paso si la base de datos ya contiene los contratos que su servicio necesita.

  3. Cree una cola. Service Broker utiliza esta cola para recibir y almacenar los mensajes entrantes para el servicio. Para obtener más información sobre cómo crear las colas, vea CREAR COLA. Cada servicio debe tener una cola. Para hacer que la programación y administración sean más sencillas, cada servicio utiliza generalmente una cola dedicada a ese servicio. Si su servicio requiere la retención de mensajes, especifique la retención de mensajes para la cola.

  4. Cree un servicio. La definición de servicio especifica la cola que el servicio utiliza y los contratos para los que este servicio es el destino.

En la mayoría de los casos, cree el servicio de destino y, a continuación, utilice los contratos y tipos de mensaje creados para el servicio de destino para crear un servicio iniciador. En algunos casos, sin embargo, puede crear un servicio de destino para un servicio iniciador ya definido. En estos casos, el servicio de destino utiliza los tipos de mensaje y los contratos que utiliza el servicio iniciador. Por ejemplo, si está creando un servicio de destino para recibir las notificaciones de eventos, utilice el contrato https://schemas.microsoft.com/SQL/Notifications/PostEventNotification, porque se trata del contrato que el servicio iniciador utiliza.

Administración de definiciones de objetos

Se recomienda que cree un script Transact-SQL para los objetos de Service Broker que utiliza su aplicación. Este script Transact-SQL facilita la referencia a las características de los objetos de Service Broker. El script también proporciona una manera para implementar el servicio en un sistema diferente o para volver a crear el servicio si es necesario.

Si su aplicación implica el envío de mensajes entre las instancias de SQL Server, se recomienda que cree un script que defina los tipos de mensaje y contratos para el servicio, y un segundo script que define la cola y el servicio. El primer script define la interfaz para el servicio y los objetos comunes al servicio iniciador y al servicio de destino. El segundo script define el nombre del servicio y la cola, y los objetos para un lado de la conversación.

En esta sección