Creación de objetos de Service Broker

Se aplica a:SQL ServerAzure SQL Managed Instance

Una aplicación usa Service Broker ejecutando instrucciones Transact-SQL que operan 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.

Información general

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.

Un contrato depende de uno o varios tipos de mensajes. 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 solamente 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 acepta un nuevo cuadro de diálogo solo si el cuadro de diálogo sigue un contrato especificado en el servicio. Un servicio iniciador especifica el contrato que se va a usar cuando comienza la conversación, por lo que no es necesario 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 usted mismo o obtener scripts para crear los tipos del creador del servicio con el que se comunicará el servicio. Puede omitir este paso si la base de datos ya contiene los tipos de mensaje que su servicio necesita.

  2. Cree uno o varios contratos que definan la estructura de las conversaciones en las que este servicio podría participar. Puede definir este contrato usted mismo o obtener scripts para crear el contrato a partir del creador del servicio con el que se comunicará el 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 la creación de colas, consulte CREATE QUEUE. 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. Sin embargo, en algunos casos, puede crear un servicio de destino para un servicio iniciado que ya está definido. En estos casos, el servicio de destino utiliza los tipos de mensaje y los contratos que utiliza el servicio iniciador. Por ejemplo, si va a crear un servicio de destino para recibir notificaciones de eventos, use el contrato https://schemas.microsoft.com/SQL/Notifications/PostEventNotification, ya que este es el contrato que usa el servicio iniciador.

Administrar definiciones de objetos

Se recomienda crear un script de Transact-SQL para los objetos de Service Broker que usa la 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 la aplicación implica enviar mensajes entre instancias de SQL Server, se recomienda crear un script que defina los tipos de mensaje y los contratos para el servicio y un segundo script que defina 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

Artículo Description
Creación de tipos de mensajes de Service Broker Describe los tipos de mensaje y cómo se utilizan.
Creación de contratos de Service Broker Describe los contratos y cómo se utilizan.
Creación de colas de Service Broker Describe las colas y cómo se utilizan.
Creación de servicios de Service Broker Describe los servicios y cómo se utilizan.
Asignar un nombre a los objetos de Service Broker Describe las consideraciones para asignar nombres a los objetos de Service Broker.
Ejemplo de script de servicio Describe un ejemplo de código de Transact-SQL y define un servicio.