Partager via


Transfert de messages Service Broker

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.

Lorsque la fonction de transfert des messages est activée, la table de routage de msdb.sys.routes détermine si les messages arrivant d'une autre instance sont en transit. Lorsque l'adresse pour l'itinéraire correspondant 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é. Ce compte s'incrémente chaque fois qu'une instance fait suivre 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 fait suivre un message n'envoie aucun accusé de réception de message à l'expéditeur. Seule la destination finale s'acquitte de cette tâche. Si au bout d'un certain temps, l'expéditeur n'a reçu aucun accusé de réception de l'instance de destination, il envoie de nouveau 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. 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.