Compartir a través de


Lección 1: crear los objetos de conversación básicos

En esta lección, aprenderá a generar todos los objetos que permiten a una base de datos admitir una conversación.

Procedimientos

Habilitar Service Broker y cambiar a la base de datos AdventureWorks2008R2

  • Copie y pegue el código siguiente en una ventana del Editor de consultas. A continuación, ejecútelo para asegurarse de que Service Broker está habilitado en la base de datos AdventureWorks2008R2, y cambiar el contexto a la base de datos.

    USE master;
    GO
    ALTER DATABASE AdventureWorks2008R2
          SET ENABLE_BROKER;
    GO
    USE AdventureWorks2008R2;
    GO
    

Crear los tipos de mensaje

  • Copie y pegue el código siguiente en una ventana del Editor de consultas. Después, ejecútelo para crear los tipos de mensaje para la conversación. Dado que a menudo se hace referencia a los objetos de Service Broker a través de varias instancias de Motor de base de datos, a la mayor parte de los objetos de Service Broker se les asigna nombres con formato URI. Esto ayuda a garantizar que son únicos en varios equipos. Ambos tipos de mensaje especifican que Service Broker solamente validará que los mensajes son documentos XML correctos, y no el código XML con un esquema concreto.

    CREATE MESSAGE TYPE
           [//AWDB/InternalAct/RequestMessage]
           VALIDATION = WELL_FORMED_XML;
    CREATE MESSAGE TYPE
           [//AWDB/InternalAct/ReplyMessage]
           VALIDATION = WELL_FORMED_XML;
    GO
    

Crear el contrato

  • Copie y pegue el código siguiente en una ventana del Editor de consultas. Después, ejecútelo para crear el contrato para la conversación. El contrato especifica que las conversaciones que lo utilizan deben enviar mensajes del tipo //AWDB/InternalAct/RequestMessage del iniciador al destino, y mensajes del tipo //AWDB/InternalAct/ReplyMessage del destino al iniciador.

    CREATE CONTRACT [//AWDB/InternalAct/SampleContract]
          ([//AWDB/InternalAct/RequestMessage]
           SENT BY INITIATOR,
           [//AWDB/InternalAct/ReplyMessage]
           SENT BY TARGET
          );
    GO
    

Crear la cola y el servicio de destino

  • Copie y pegue el código siguiente en una ventana del Editor de consultas. Después, ejecútelo para crear la cola y el servicio que se usa para el destino. Dado que se hace referencia a las colas de la misma base de datos de una manera similar que a las tablas y vistas, a los nombres de cola se les da formato igual que a los de las tablas o vistas. La instrucción CREATE SERVICE asocia el servicio a TargetQueueIntAct. Por consiguiente, todos los mensajes que se envíen al servicio se recibirán en TargetQueueIntAct. CREATE SERVICE también especifica que solo las conversaciones que usan el //AWDB/InternalAct/SampleContract que se creó anteriormente pueden usar el servicio como servicio de destino.

    CREATE QUEUE TargetQueueIntAct;
    
    CREATE SERVICE
           [//AWDB/InternalAct/TargetService]
           ON QUEUE TargetQueueIntAct
              ([//AWDB/InternalAct/SampleContract]);
    GO
    

Crear la cola y el servicio del iniciador

  • Copie y pegue el código siguiente en una ventana del Editor de consultas. Después, ejecútelo para crear la cola y el servicio que se usa para el iniciador. Dado que no se especifica un nombre de contrato, ningún otro servicio puede usar este como servicio de destino.

    CREATE QUEUE InitiatorQueueIntAct;
    
    CREATE SERVICE
           [//AWDB/InternalAct/InitiatorService]
           ON QUEUE InitiatorQueueIntAct;
    GO
    

Pasos siguientes

Ha configurado correctamente AdventureWorks2008R2 para que admita una conversación entre //AWDB/InternalAct/InitiatorService y //AWDB/InternalAct/TargetService. A continuación, creará un procedimiento almacenado para admitir la activación interna en la cola de destino. Vea Lección 2: crear un procedimiento de activación interna.