Contrats
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. Ce même service demandeur doit également connaître les types de messages qu'il est susceptible de recevoir pour se préparer à leur traitement.
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 chacun des participants, ou par l'initiateur seulement pour que ce dernier ait le moyen d'engager une conversation qui utilise le contrat.
Service Broker comprend également un contrat intégré nommé DEFAULT. Ce contrat contient uniquement le type de message SENT BY ANY. Si aucun contrat n'est spécifié dans l'instruction BEGIN DIALOG, Service Broker utilise le contrat DEFAULT.
Un contrat peut, par exemple, contenir les types de messages SubmitRequest, ProcessRequest et RequestStatus. Seul le point de terminaison à l'origine de la conversation peut utiliser SubmitRequest, tandis que le point de terminaison cible est le seul à pouvoir envoyer ProcessRequest. Chaque participant de 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.
Voir aussi
Concepts
Autres ressources
CREATE CONTRACT (Transact-SQL)
DROP CONTRACT (Transact-SQL)
Creating Service Broker Contracts