Lição 1: Criando os objetos de conversa
Nesta lição você aprenderá a criar todos os objetos que capacitam um banco de dados a oferecer suporte à conversa do banco de dados.
Procedimentos
Habilitar o Service Broker e alternar para o banco de dados AdventureWorks2008R2
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 AdventureWorks2008R2 e que o contexto seja alternado para o banco de dados.
USE master; GO ALTER DATABASE AdventureWorks2008R2 SET ENABLE_BROKER; GO USE AdventureWorks2008R2; 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. 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. Ambos esses 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/1DBSample/RequestMessage] VALIDATION = WELL_FORMED_XML; CREATE MESSAGE TYPE [//AWDB/1DBSample/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 contrato especifica que as conversas que o utilizam precisam enviar mensagens do tipo //AWDB/1DBSample/RequestMessage do iniciador para o destino, e mensagens do tipo //AWDB/1DBSample/ReplyMessage do destino para o iniciador.
CREATE CONTRACT [//AWDB/1DBSample/SampleContract] ([//AWDB/1DBSample/RequestMessage] SENT BY INITIATOR, [//AWDB/1DBSample/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 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 e exibição. A instrução CREATE SERVICE associa o serviço a TargetQueue1DB. Por isso, todas as mensagens que são enviadas ao serviço serão recebidas no TargetQueue1DB. CREATE SERVICE especifica também que apenas as conversas que usam //AWDB/1DBSample/SampleContract criado anteriormente podem usar o serviço como serviço de destino.
CREATE QUEUE TargetQueue1DB; CREATE SERVICE [//AWDB/1DBSample/TargetService] ON QUEUE TargetQueue1DB ([//AWDB/1DBSample/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 InitiatorQueue1DB; CREATE SERVICE [//AWDB/1DBSample/InitiatorService] ON QUEUE InitiatorQueue1DB; GO
Próximas etapas
Você configurou com êxito o AdventureWorks2008R2 para oferecer suporte a uma conversa entre o //AWDB/1DBSample/InitiatorService e o //AWDB/1DBSample/TargetService. A seguir uma conversa será concluída usando essa configuração. Consulte Lição 2: Começando uma conversa e transmitindo mensagens.