Itinéraires

S’applique à :SQL ServerAzure SQL Managed Instance

Service Broker utilise des itinéraires pour déterminer le lieu de remise des messages. Quand un service envoie un message sur une conversation, SQL Server utilise des routes pour localiser le service qui va recevoir le message. Quand ce service répond, SQL Server utilise à nouveau des routes pour localiser le service à l’origine de la conversation. Par défaut, chaque base de données contient un itinéraire qui spécifie que les messages pour n’importe quel service qui n’a pas d’itinéraire explicite sont remis dans l’instance SQL Server.

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 exactement au nom du service dans la BEGIN DIALOG commande.

  • Identificateur d’instance de courtier

    L'identificateur unique d'une base de données spécifique vers laquelle envoyer les messages. Il s’agit de la service_broker_guid colonne de la ligne de sys.databases table de la base de données vers laquelle cette route 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 correspond au nom du service et à l’identificateur d’instance de répartiteur spécifiés dans l’instruction BEGIN DIALOG CONVERSATION par rapport au nom du service et à l’identificateur d’instance broker spécifiés dans l’itinéraire. Les itinéraires qui ne fournissent pas de nom de service correspondent à un nom de service. Les itinéraires qui ne fournissent pas d’identificateur d’instance broker correspondent à n’importe quel identificateur d’instance broker. Lorsque plusieurs itinéraires correspondent à une conversation, SQL Server sélectionne un itinéraire, comme décrit dans le routage Service Broker.

SQL Server garantit qu’une fois que la cible a accusé réception du premier message, tous les messages suivants sur cette conversation seront routés vers la même base de données. Toutefois, d’autres conversations sur le même groupe de conversations ne sont pas garanties pour acheminer vers la même base de données. 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 la route 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 où l’initiateur et la cible de la conversation sont présents dans la même instance SQL Server, aucune route supplémentaire n’est nécessaire. Cependant, la création d’une route pour chaque service permet de protéger la route AutoCreatedLocal de toute modification ou suppression.