Lição 1: Criar os objetos de conversação base

Aplica-se a:SQL ServerAzure SQL Managed Instance

Nesta lição, aprenda a criar todos os objetos que permitem que um banco de dados dê suporte a uma conversa no banco de dados.

Procedimentos

Habilite o Service Broker e alterne para o banco de dados AdventureWorks

Observação

Os exemplos de código neste artigo foram testados usando o banco de dados de exemplo AdventureWorks2025, que você pode baixar da página principal do Microsoft SQL Server Samples and Community Projects .

Copie e cole o código a seguir em uma janela do Editor de Consultas. Em seguida, execute-o para garantir que o Service Broker esteja habilitado no banco de dados AdventureWorks2025 e alterne o contexto para o banco de dados.

USE master;
GO

ALTER DATABASE AdventureWorks2022
    SET ENABLE_BROKER;
GO

USE AdventureWorks2022;
GO

Criar os tipos de mensagem

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 geralmente são referenciados em várias instâncias do Mecanismo de Banco de Dados, a maioria dos objetos do Service Broker recebe nomes em um formato URI. Isso ajuda a garantir que eles sejam exclusivos em vários computadores. Ambos os tipos de mensagem especificam que o Service Broker apenas valida que as mensagens são documentos XML bem formados e que o XML não é validado em relação a um esquema específico.

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 contrato especifica que as conversas que o usam devem enviar mensagens do tipo AWDB/InternalAct/RequestMessage do iniciador para o destino e mensagens do tipo AWDB/InternalAct/ReplyMessage do destino para o 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 e execute-o para criar a fila e o serviço usados para o destino. Como as filas são referenciadas a partir do mesmo banco de dados de maneira semelhante a tabelas e exibições, os nomes das filas são formatados como nomes de tabelas ou exibições. A CREATE SERVICE instrução associa o serviço ao TargetQueueIntAct. Portanto, todas as mensagens que são enviadas para o serviço são recebidas no TargetQueueIntAct. O CREATE SERVICE também especifica que somente conversas que usam o AWDB/InternalAct/SampleContract criado anteriormente podem usar o serviço como um serviço de destino.

CREATE QUEUE TargetQueueIntAct;

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

Criar a fila do iniciador e o serviço

Copie e cole o código a seguir em uma janela do Editor de Consultas e execute-o para criar a fila e o serviço usados para o iniciador. Como nenhum nome de contrato é especificado, nenhum outro serviço pode usar esse serviço como um serviço de destino.

CREATE QUEUE InitiatorQueueIntAct;

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

Próximo passo

Você configurou com êxito o AdventureWorks2025 para dar suporte a uma conversa entre o //AWDB/InternalAct/InitiatorService e o //AWDB/InternalAct/TargetService.