Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Managed Instance
Un contrat définit les types de messages qu'une application utilise pour accomplir une tâche particulière. Il représente l'accord passé entre deux services qui permet à chaque service d'envoyer des messages en vue de réaliser une tâche précise. Les définitions de contrats demeurent en permanence dans la base de données où le type est créé.
Vous devez donc créer un contrat identique dans chaque base de données participant à une conversation. Par exemple, si une application de ressources humaines veut vérifier un ID employé, le service demandeur de la vérification doit savoir quels types de messages l'autre service attend. Le service demandeur doit également savoir quels types de messages il peut s’attendre à recevoir afin qu’il soit prêt à les traiter.
Le contrat spécifie les types de messages utilisables pour accomplir le travail voulu. Il spécifie également pour chaque participant de la conversation quels types de message il peut utiliser. Certains types de messages peuvent être envoyés par chacun des participants tandis que d'autres sont limités au niveau de l'envoi, soit à l'initiateur soit à la cible. Un contrat doit contenir un type de message envoyé par l’initiateur ou un type de message envoyé par l’un des participants ; sinon, il n’existe aucun moyen pour l’initiateur de commencer une conversation qui utilise le contrat.
Service Broker inclut également un contrat intégré nommé DEFAULT. Le DEFAULT contrat contient uniquement le type SENT BY ANYde message . Si aucun contrat n’est spécifié dans l’instruction BEGIN DIALOG , Service Broker utilise le DEFAULT contrat.
Un contrat peut, par exemple, contenir les types de messages SubmitRequest, ProcessRequest, et RequestStatus. Seul le point de terminaison de lancement peut utiliser SubmitRequest et seul le point de terminaison cible peut envoyer ProcessRequest. L’un ou l’autre participant à la conversation peut envoyer le type de message RequestStatus. Le type de message RequestStatus permet au participant de connaître l'état d'avancement du traitement de la cible ou de vérifier avec l'initiateur l'état de tous les traitements parallèles liés à cette demande.