Contracts

Aplica-se a:SQL ServerAzure SQL Managed Instance

Um contrato define quais tipos de mensagem um aplicativo usa para realizar uma tarefa específica. Um contrato é um acordo entre dois serviços sobre quais mensagens cada serviço envia para realizar uma tarefa específica. As definições de contrato persistem no banco de dados onde o tipo é criado.

Você cria um contrato idêntico em cada banco de dados que participa de uma conversa. Por exemplo, se um aplicativo de recursos humanos quiser verificar uma ID de funcionário, o serviço que solicita a verificação deve saber quais tipos de mensagens o outro serviço espera. O serviço solicitante também deve saber quais tipos de mensagens pode esperar receber para que esteja preparado para processá-las.

O contrato especifica quais tipos de mensagem podem ser usados para realizar o trabalho desejado. O contrato também especifica qual participante da conversa pode usar cada tipo de mensagem. Alguns tipos de mensagem podem ser enviados por qualquer participante; Outros tipos de mensagem são restritos para serem enviados apenas pelo iniciador ou apenas pelo destino. Um contrato deve conter um tipo de mensagem enviada pelo iniciador ou um tipo de mensagem enviada por qualquer um dos participantes; caso contrário, não há como o iniciador iniciar uma conversa que usa o contrato.

O Service Broker também inclui um contrato interno chamado DEFAULT. O DEFAULT contrato contém apenas o tipo SENT BY ANYde mensagem . Se nenhum contrato for especificado na instrução, o BEGIN DIALOG Service Broker usará o DEFAULT contrato.

Por exemplo, um contrato pode ter os tipos de mensagem SubmitRequest, ProcessRequest e RequestStatus. Somente o ponto de extremidade inicial pode usar SubmitRequest, e somente o ponto de extremidade de destino pode enviar ProcessRequest. Qualquer participante da conversa pode enviar o tipo de mensagem RequestStatus . O tipo de mensagem RequestStatus permite que o participante veja onde o destino está em seu processamento ou verifique com o iniciador o status de qualquer processamento paralelo relacionado a essa solicitação.