Partager via


Transfert de messages Service Broker

S’applique à : SQL Server Azure SQL Managed Instance

Le transfert de messages Service Broker permet à une instance SQL Server d'accepter des messages provenant de l'extérieur pour les envoyer à une instance différente.

Un administrateur peut utiliser le transfert de messages pour :

  • fournir une connectivité entre des serveurs appartenant à différents domaines autorisés ;

  • simplifier l'administration en créant une instance centralisée unique qui conserve les informations de routage pour un domaine ;

  • répartir du travail entre plusieurs instances.

Quand le transfert est activé, la table de routage dans msdb.sys.routes détermine si les messages arrivant d’une autre instance sont transférés. Quand l’adresse de la route correspondante n’est pas LOCAL, SQL Server transfère le message à l’adresse spécifiée. Sinon, le message est remis localement.

Chaque message Service Broker présente une durée de vie maximale et un comptage du nombre de fois que le message est transféré. Quand une instance transfère le message, le nombre augmente dans le message. Si le message dépasse la durée de vie maximale, l'instance assurant le transfert ignore le message. Dans certains cas, cette stratégie permet d'éviter les éventuels problèmes de boucle de routage.

Transfert de messages et remise fiable

Une instance qui transfère un message n’envoie aucun accusé de réception à l’expéditeur. Seule la destination finale s'acquitte de cette tâche. Si l’expéditeur ne reçoit pas d’accusé de réception de la destination au bout d’un certain temps, il renvoie le message.

Une instance qui assure le transfert de messages n'a pas besoin de stocker les messages qu'elle fait suivre. SQL Server conserve ces messages en mémoire. La quantité de mémoire disponible qui est réservée au transfert de messages est précisée au niveau de la configuration du point de terminaison Service Broker. Grâce à cette stratégie, l'efficacité d'un transfert de messages sans état est garantie. Au cas où une instance chargée du transfert tomberait en panne, aucun message n'est perdu. Chaque message est conservé chez l’expéditeur jusqu’à ce que la destination finale accuse réception du message, comme décrit dans Protocoles de communication Service Broker.

La vue de gestion sys.dm_broker_forwarded_messages regroupe des informations sur les messages en cours de transfert par l’instance. Une instance ne s'occupe pas de la persistance des messages durant le processus de transfert, ces messages sont uniquement présents dans la mémoire. L'instance qui envoie le message et l'instance qui le reçoit conservent les messages. L'instance expéditrice supprime le message uniquement lorsqu'elle reçoit un accusé de réception du message en provenance de l'instance réceptrice.

Sécurité et transfert

Le transfert de messages Service Broker ne requiert aucun déchiffrement des messages en transit au niveau d'une instance assurant le transfert. Ainsi, la sécurité du dialogue doit être uniquement configurée sur les bases de données participant à la conversation.

Toutefois, dans la mesure où la sécurité du transport s'applique aux connexions existant entre les instances SQL Server, la sécurité du transport doit être correctement configurée sur chacune de ces instances par rapport aux instances avec lesquelles elle communique directement. Par exemple, si l'instance A et l'instance B communiquent via une instance de transfert de messages, la sécurité du transport des instances A et B doit être convenablement configurée par rapport à l'instance chargée du transfert. Du fait qu'aucun échange direct de messages n'est réalisé entre ces instances, la sécurité du transport ne doit pas être configurée pour que ces instances communiquent entre elles.

Voir aussi