Partilhar via


Criando tipos de mensagem do Service Broker

Um tipo de mensagem define o nome de um tipo específico de mensagem e a validação que o Service Broker executa naquele tipo de mensagem. Para determinar os tipos de mensagem que seu aplicativo usará, primeiramente, planeje as tarefas que ele tem que executar e os dados que são necessários para executar cada tarefa.

A abordagem mais comum para um aplicativo é estruturar as mensagens de forma que cada mensagem inclua as informações necessárias para uma etapa da tarefa. Quando cada mensagem contém informações para uma etapa da tarefa, o aplicativo pode receber facilmente a mensagem, concluir a etapa e enviar uma resposta em uma única transação. Portanto, para muitos aplicativos, o modo mais fácil de determinar os tipos de mensagem e o conteúdo da mensagem é determinar os limites da transação para as tarefas desempenhadas pelo aplicativo. Cada etapa distinta é uma transação e cada transação corresponde a um tipo de mensagem trocado entre os serviços. Informações de status, resultados ou saída também são tipos de mensagem.

Os protocolos de comunicação do Service Broker são criados para funcionar com esse estilo de sistema de mensagens. A caixa de diálogo Protocolo fragmenta mensagens grandes para transmissão e garante que mensagens grandes não impeçam que as mensagens pequenas sejam transmitidas.

Escolhendo um tipo de validação

A validação especificada para a mensagem depende do conteúdo da mensagem. Uma prática comum é usar a validação mais restritiva disponível durante o teste e, em seguida, escolher a validação menos restritiva para melhorar o desempenho quando o aplicativo for implantado. Por exemplo, é possível trocar um documento XML digitado como o corpo de uma mensagem que especifica uma validação de NENHUM. Nesse caso, seu aplicativo valida a mensagem ao processar o XML.

O formato de rede para uma mensagem inclui o nome do tipo de mensagem. Portanto, os nomes do tipo de mensagem normalmente são escolhidos para evitar problemas de agrupamento e conflitos de nomenclatura. Para obter mais informações sobre nomenclatura, consulte Nomeando objetos do Service Broker.

Indicando êxito e falha

Um aplicativo normalmente não define novos tipos de mensagem para indicar êxito ou falha. Em vez disso, use a instrução END CONVERSATION para indicar que a conversação está concluída e que a tarefa foi bem-sucedida. Se a tarefa tiver falhado, inclua a opção WITH ERRO para retornar uma mensagem de erro na conversação.

Em geral, somente um dos participantes da conversação deverá terminar a conversação quando a tarefa estiver concluída. O outro participante emitirá somente um END CONVERSATION em resposta a uma caixa de diálogo Término ou mensagem de erro. A documentação para um serviço geralmente especificará qual participante terminará a conversação, se a conversação for concluída com êxito. O fornecimento dessa documentação ajuda a evitar problemas onde nenhum participante termina a conversação ou onde um participante termina a conversação enquanto o outro ainda está realizando tarefas. Os dois pontos de extremidade devem processar mensagens de erro, porque as mensagens internas do Service Broker são enviadas para os dois pontos de extremidade. Por exemplo, se o diálogo expirar antes de ser fechado, os dois pontos de extremidade receberão uma mensagem de erro do Service Broker.

Qualquer participante pode terminar uma conversação com um erro a qualquer momento. Para obter uma descrição sobre como tratar mensagens de erro do Service Broker, consulte Tratando mensagens de erro do Service Broker.