Créer des objets Service Broker

S’applique à :SQL ServerAzure SQL Managed Instance

Une application utilise Service Broker en exécutant des instructions Transact-SQL qui s'appliquent aux objets Service Broker définis dans une base de données. Cette section décrit les éléments à prendre en compte lorsque vous créez les objets Service Broker d'une application.

Vue d’ensemble

Les objets Service Broker définissent les métadonnées et le stockage pour un ensemble de tâches spécifique :

  • Les types de messages définissent les données qui sont échangées dans une conversation.

  • Les contrats définissent les tâches. Chaque contrat spécifie les types de messages pouvant être utilisés dans une conversation, ainsi que le côté de la conversation qui peut envoyer le message.

  • Une file d'attente stocke les messages entrants d'un service.

  • Un service représente un ensemble de tâches professionnelles associé. Le nom du service est également utilisé pour identifier la file d'attente du service.

Un contrat dépend d’un ou plusieurs types de messages. Un service dépend d'une file d'attente et peut dépendre d'un ou de plusieurs contrats. Par conséquent, les contrats sont créés après les types de messages et sont supprimés avant les types de messages. Les services sont créés après les files d'attente et les contrats, et ils sont supprimés avant les files d'attente et les contrats.

Créer des objets pour un service

Pour la création d'un service, la procédure de base est toujours la même, que votre service soit un service initiateur, un service cible ou les deux à la fois.

La définition d'un service spécifie les contrats pour lesquels le service peut constituer une cible. Par opposition, une application peut utiliser un service pour lancer une conversation qui utilise un contrat défini dans la base de données. Service Broker adopte cette approche pour faire respecter la règle générale selon laquelle un service ne doit recevoir que des messages que l'application peut traiter. Pour vous assurer que l’application ne reçoit pas de messages d’un type arbitraire ou inconnu, Service Broker accepte une nouvelle boîte de dialogue uniquement si la boîte de dialogue suit un contrat spécifié dans le service. Un service de lancement spécifie le contrat à utiliser lorsque la conversation commence. Par conséquent, un service de lancement n’a pas besoin d’inclure le contrat dans la définition du service.

Pour créer les objets d'un service, procédez comme suit :

  1. Créez des types de messages qui définissent les messages que votre service utilisera pour effectuer les tâches de communication requises. Vous pouvez définir ces types vous-même ou obtenir des scripts pour créer les types du créateur du service avec lequel votre service communiquera. Vous pouvez ignorer cette étape lorsque la base de données contient déjà les types de messages dont votre service a besoin.

  2. Créez un ou plusieurs contrats qui définissent la structure des conversations dans lesquelles ce service peut participer. Vous pouvez définir ce contrat vous-même ou obtenir des scripts pour créer le contrat auprès du créateur du service avec lequel votre service communiquera. Vous pouvez ignorer cette étape lorsque la base de données contient déjà les contrats dont votre service a besoin.

  3. Créez une file d’attente. Créez une file d'attente. Service Broker utilise cette file d'attente pour recevoir et stocker les messages entrants du service. Pour plus d’informations sur la création de files d’attente, consultez CREATE QUEUE. Chaque service doit disposer d'une file d'attente. Pour simplifier la programmation et l'administration, chaque service utilise généralement une file d'attente qui lui est dédiée. Si votre service doit utiliser la rétention des messages, spécifiez le paramètre de rétention des messages pour la file d'attente.

  4. Créez un service. La définition du service spécifie la file d'attente que le service utilise, ainsi que les contrats pour lesquels ce service constitue la cible.

Dans la plupart des cas, vous créez le service cible, puis vous utilisez les contrats et les types de messages créés pour le service cible afin de créer un service initiateur. Dans certains cas, toutefois, vous pouvez créer un service cible pour un service de lancement déjà défini. Dans ces cas de figure, le service cible utilise les types de messages et les contrats que le service initiateur utilise. Par exemple, si vous créez un service cible pour recevoir des notifications d’événements, vous utilisez le contrat https://schemas.microsoft.com/SQL/Notifications/PostEventNotification, car il s’agit du contrat utilisé par le service de lancement.

Gérer les définitions d’objets

Nous vous recommandons de créer un script Transact-SQL pour les objets Service Broker que votre application utilise. Avec ce script Transact-SQL, vous pouvez aisément faire référence aux caractéristiques de vos objets Service Broker. Le script vous offre également la possibilité de déployer le service sur un autre système ou de recréer le service si besoin est.

Si votre application implique l’envoi de messages entre des instances SQL Server, nous vous recommandons de créer un script qui définit les types de messages et les contrats pour le service, et un deuxième script qui définit la file d’attente et le service. Le premier script définit l'interface du service, les objets qui sont communs au service initiateur et au service cible. Le deuxième script définit le nom du service et la file d'attente, les objets d'un côté de la conversation.

Dans cette section

Article Descriptif
Créer des types de messages Service Broker Décrit les types de messages et leur mode d'utilisation.
Créer des contrats Service Broker Décrit les contrats et leur mode d'utilisation.
Créer des files d’attente Service Broker Décrit les files d'attente et leur mode d'utilisation.
Créer des services Service Broker Décrit les services et leur mode d'utilisation.
Identifier des objets du Service Broker Décrit les éléments à prendre en compte pour affecter des noms aux objets Service Broker.
Exemple de script de service Décrit un exemple de code Transact-SQL et définit un service.