Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Instância Gerenciada de SQL do Azure
Um aplicativo usa o Service Broker executando instruções Transact-SQL que operam em objetos do Service Broker definidos em um banco de dados. Esta seção descreve considerações gerais quando você cria objetos do Service Broker para um aplicativo.
Visão geral
Os objetos do Service Broker definem os metadados e o armazenamento para um conjunto específico de tarefas:
Tipos de mensagem definem os dados que são trocados em uma conversa.
Contratos definem tarefas. Cada contrato especifica os tipos de mensagem que podem ser usados em uma conversa específica e qual lado da conversa pode enviar a mensagem.
Uma fila armazena mensagens de entrada para um serviço.
Um serviço representa um conjunto relacionado de tarefas comerciais. O nome do serviço também é usado para localizar a fila para o serviço.
Um contrato depende de um ou mais tipos de mensagem. Um serviço depende de uma fila e pode depender de um ou mais contratos. Portanto, os contratos são criados depois dos tipos de mensagem e descartados antes dos tipos de mensagem. Serviços são criados depois de filas e contratos e descartados antes de filas e contratos.
- Para obter mais informações sobre esses objetos, consulte a arquitetura de conversa.
Criar objetos para um serviço
O procedimento para criar um serviço segue a mesma estrutura básica independentemente se o seu serviço ser inicial, de destino ou ambos.
A definição de um serviço especifica os contratos para os quais o serviço pode ser um destino. Em contraste, um aplicativo pode usar um serviço para iniciar uma conversa que usa qualquer contrato definido no banco de dados. O Service Broker adota essa abordagem para aplicar a regra geral de que um serviço deve apenas receber mensagens que o aplicativo pode processar. Para garantir que o aplicativo não receba mensagens de um tipo arbitrário ou desconhecido, o Service Broker aceita uma nova caixa de diálogo somente se a caixa de diálogo seguir um contrato especificado no serviço. Um serviço de iniciação especifica o contrato a ser usado quando a conversa começa, portanto, um serviço de iniciação não precisa incluir o contrato na definição de serviço.
Para criar os objetos para um serviço, faça o seguinte:
Crie tipos de mensagem que definam as mensagens que seu serviço usará para realizar qualquer comunicação exigida. Você pode definir esses tipos por conta própria ou obter scripts para criar os tipos do criador do serviço com o qual seu serviço se comunicará. Você pula essa etapa quando o banco de dados já contiver os tipos de mensagem que seu serviço precisa.
Crie um ou mais contratos que definam a estrutura das conversas nas quais esse serviço pode participar. Você pode definir esse contrato por conta própria ou obter scripts para criar o contrato do criador do serviço com o qual seu serviço se comunicará. Você pula essa etapa quando o banco de dados já contiver os contratos que seu serviço precisa.
Criar uma fila. O Service Broker usa essa fila para receber e armazenar mensagens de entrada para o serviço. Para obter mais informações sobre como criar filas, consulte CREATE QUEUE. Todo serviço deve ter uma fila. Para tornar a programação e administração mais simples, cada serviço geralmente usará uma fila dedicada àquele serviço. Se seu serviço requerer retenção de mensagem, especifique a retenção de mensagem para a fila.
Crie um serviço. A definição de serviço especifica a fila que o serviço usa e os contratos para os quais esse serviço é o destino.
Na maioria dos casos, você cria o serviço de destino e, em seguida, usa os contratos e os tipos de mensagem criados para o serviço de destino para criar um serviço inicial. Em alguns casos, no entanto, você pode criar um serviço de destino para um serviço de iniciação que já está definido. Nesses casos, o serviço de destino usa os tipos de mensagem e contratos que o serviço inicial usa. Por exemplo, se você estiver criando um serviço de destino para receber notificações de evento, use o contrato https://schemas.microsoft.com/SQL/Notifications/PostEventNotification, pois esse é o contrato que o serviço de iniciação usa.
Gerenciar definições de objeto
Recomendamos que você crie um script Transact-SQL para os objetos do Service Broker que seu aplicativo usa. Esse script do Transact-SQL facilita a referência às especificações dos seus objetos do Service Broker. Esse script também fornece um modo de implantar o serviço em um sistema diferente ou recriar o serviço se for necessário.
Se o aplicativo envolver o envio de mensagens entre instâncias do SQL Server, recomendamos que você crie um script que defina os tipos de mensagem e os contratos para o serviço e um segundo script que define a fila e o serviço. O primeiro script define a interface para o serviço, os objetos que são comuns ao serviço inicial e o serviço de destino. O segundo script define o nome do serviço e a fila, os objetos para um lado da conversa.
Nesta seção
| Artigo | Description |
|---|---|
| Criar tipos de mensagem do Service Broker | Descreve tipos de mensagem e como eles são usados. |
| Criar contratos do Service Broker | Descreve contratos e como eles são usados. |
| Criar filas do Service Broker | Descreve filas e como eles são usados. |
| Criar serviços do Service Broker | Descreve serviços e como eles são usados. |
| Nomear objetos do Service Broker | Descreve considerações para nomear objetos do Service Broker. |
| Exemplo de script de serviço | Descreve uma amostra de código do Transact-SQL e define um serviço. |