Itinéraires

Service Broker utilise des itinéraires pour déterminer l'emplacement de remise des messages. Lorsqu'un service envoie un message dans une conversation, SQL Server utilise les itinéraires pour localiser le service destinataire du message. Lorsque ce service répond, SQL Server utilise une nouvelle fois les itinéraires pour localiser le service à l'origine de la conversation. Chaque base de données contient un itinéraire par défaut, qui spécifie la remise dans l'instance SQL Server des messages de services sans itinéraire explicite.

Un itinéraire est formé de trois composants de base :

  • Nom du service
    Le nom du service pour lequel l'itinéraire spécifie l'adressage. Ce nom doit correspondre parfaitement à Service Name dans la commande BEGIN DIALOG.

  • Identificateur d'instance Service Broker
    L'identificateur unique d'une base de données spécifique vers laquelle envoyer les messages. Il s'agit de la colonne service_broker_guid de la table sys.databases pour la base de données vers laquelle l'itinéraire pointe.

  • Adresse réseau
    Une adresse machine réelle, un mot clé qui restreint l'itinéraire à la machine locale ou qui indique que la couche de transport déduit l'adresse du nom du service. Une adresse réseau peut être l'adresse du broker qui héberge le service ou celle d'un broker qui transfère des messages.

Pour déterminer l'itinéraire d'une conversation, SQL Server fait correspondre le nom du service et l'identificateur d'instance Service Broker spécifiés dans l'instruction BEGIN DIALOG CONVERSATION avec ceux qui sont spécifiés dans l'itinéraire. Les itinéraires qui ne fournissent aucun nom de service correspondent à n'importe quel nom de service, ceux qui ne fournissent aucun identificateur d'instance Service Broker correspondent à n'importe quel identificateur d'instance Service Broker. Lorsque plusieurs itinéraires correspondent à une conversation, SQL Server en sélectionne un, comme décrit dans la rubrique Routage Service Broker.

Une fois que la cible a accusé réception du premier message, SQL Server apporte la garantie que tous les autres messages de cette conversation seront acheminés vers la même base de données. Cet acheminement n'est cependant pas garanti pour les autres conversations du même groupe de conversations. Si une application a besoin que les messages des conversations connexes soient acheminés vers la même base de données, elle doit fournir un identificateur d'instance Service Broker au moment où elle engage une conversation.

Par défaut, chaque base de données utilisateur contient l'itinéraire AutoCreatedLocal. Cet itinéraire, correspondant à tous les noms de services et instances de broker, spécifie que le message doit être remis dans l'instance active. Pour les scénarios simples, dans lesquels l'initiateur et la cible de la conversation sont présents dans la même instance SQL Server, aucun itinéraire supplémentaire n'est nécessaire. Toutefois, la création d'un itinéraire pour chaque service permet de protéger l'itinéraire AutoCreatedLocal de toute modification ou suppression.