Lição 1: Criando os objetos de conversação base
Nesta lição você aprenderá a criar todos os objetos que capacitam um banco de dados a oferecer suporte à conversação do banco de dados.
Procedimentos
Habilite o Service Broker e alterne para o banco de dados AdventureWorks
Copie e cole o código a seguir em uma janela do Editor de Consultas. Em seguida, execute-o para assegurar que o Service Broker seja habilitado no banco de dados AdventureWorks e que o contexto seja alternado para o banco de dados.
USE master; GO ALTER DATABASE AdventureWorks SET ENABLE_BROKER; GO USE AdventureWorks; GO
Criar os tipos de mensagens
Copie e cole o código a seguir em uma janela do Editor de Consultas. Em seguida, execute-o para criar os tipos de mensagem para a conversação. Como os objetos do Service Broker, em geral, são referenciados em várias instâncias do Mecanismo de Banco de Dados, a maioria dos objetos do Service Broker recebem nomes no formato de URI. Isso ajuda a garantir que eles sejam únicos em vários computadores. Os dois tipos de mensagens especificam que o Service Broker só validará que as mensagens sejam documentos XML bem formados e que não validará XML de determinado esquema.
CREATE MESSAGE TYPE [//AWDB/InternalAct/RequestMessage] VALIDATION = WELL_FORMED_XML; CREATE MESSAGE TYPE [//AWDB/InternalAct/ReplyMessage] VALIDATION = WELL_FORMED_XML; GO
Criar o contrato
Copie e cole o código a seguir em uma janela do Editor de Consultas. Em seguida, execute-o para criar o contrato para a conversação. O contrato especifica que as conversações que o utilizam devem enviar mensagens do tipo //AWDB/InternalAct/RequestMessage do iniciador ao destino, e mensagens do tipo //AWDB/InternalAct/ReplyMessage do destino ao iniciador.
CREATE CONTRACT [//AWDB/InternalAct/SampleContract] ([//AWDB/InternalAct/RequestMessage] SENT BY INITIATOR, [//AWDB/InternalAct/ReplyMessage] SENT BY TARGET ); GO
Criar a fila de destino e o serviço
Copie e cole o código a seguir em uma janela do Editor de Consultas. Em seguida, execute-o para criar a fila e o serviço a serem usados para o destino. Como as filas são referenciadas do mesmo banco de dados de forma semelhante a tabelas e exibições, os nomes de filas são formatados como nomes de tabela ou exibição. A instrução CREATE SERVICE associa o serviço a TargetQueueIntAct. Portanto, todas as mensagens enviadas ao serviço serão recebidas no TargetQueueIntAct. CREATE SERVICE especifica também que apenas as conversações que usam //AWDB/InternalAct/SampleContract criado anteriormente podem usar o serviço como serviço de destino.
CREATE QUEUE TargetQueueIntAct; CREATE SERVICE [//AWDB/InternalAct/TargetService] ON QUEUE TargetQueueIntAct ([//AWDB/InternalAct/SampleContract]); GO
Criar a fila e o serviço do iniciador
Copie e cole o código a seguir em uma janela do Editor de Consultas. Em seguida, execute-o para criar a fila e o serviço a serem usados para o iniciador. Como nenhum nome de contrato é especificado, nenhum outro serviço pode usar esse serviço como serviço de destino.
CREATE QUEUE InitiatorQueueIntAct; CREATE SERVICE [//AWDB/InternalAct/InitiatorService] ON QUEUE InitiatorQueueIntAct; GO
Próximas etapas
Você configurou com êxito o AdventureWorks para oferecer suporte a uma conversação entre o //AWDB/InternalAct/InitiatorService e o //AWDB/InternalAct/TargetService. Logo, você criará um procedimento armazenado para dar suporte à ativação interna na fila de destino. Consulte Lição 2: Criando um procedimento de ativação interna.