Exposé le fonctionnement de Service Broker c'est (relativement simple), mais, et c'est bien normal, il faut également se poser la question de : Comment utiliser Service Broker? C'est pourquoi, les exemples présentés, ci dessous doivent vous permettre de mieux comprendre ce qu'il est possible de faire avec service Broker et comment il est possible de la faire.
Cette suite d'exemple, s'appuie sur la structure Service Broker, qui est défini dans mon premier article sur Service Broker, disponible ici.
La première étape consiste à traiter correctement les informations reçus via le message envoyé. Ce message contient des informations au format XML. Il est donc possible en utilisant OPENXML de manipuler correctement les informations au format XML.
Dans l'exemple suivant, les informations reçus via Service Broker sont enregistrées dans une table qui est créée avec le script suivant:

Puis il est nécessaire d'initier le dialogue et d'envoyer le message

Enfin, le message peut être lu depuis la file d'attente puis traité. Les informations sont alors ajoutées dans la table exemple.client créé pour ce test.

Cette fois ci la mise en place est un peu plus complexe. En effet Service Broker doit être capable d'accéder au service distant avec un certain contexte de sécurité. Pour cela il lui est nécessaire de se connecter au serveur. Il n'est pas possible ni même envisageable de coder en "dur" le mot de passe à utiliser pour se connecter au serveur. C'est pourquoi la connexion utilisée par service Broker sera basé sur un certificat.
Il est également nécessaire de définir une route au niveau Service Broker afin que le service initiateur soit capable de localiser le service route. Ces routes sont tout à fait comparables aux routes qui peuvent être mise en place au niveau du réseau.
La mise en place de ce dialogue entre 2 bases distinctes de la même instance SQL Server est illustrée tout au long des étapes suivantes
Pour mettre en place le dialogue Service Broker entre 2 bases, il est nécessaire de respecter les étapes suivantes:












Il ne reste plus, maintenant qu'à tester le fonctionnement de l'architecture Service Broker ainsi mise en place. Ainsi depuis la base bd1 le dialogue est initié.

Depuis la base de données cible, il est possible de lire est de traiter le message reçu de la façon suivante:

La mise au point de Service Broker, n'est pas toujours facile, aussi est il possible d'interroger les files d'attentes afin de savoir le message est bien arrivé, ou bien si un message d'erreur est présent. Il est nécessaire d'interroger les files d'attentes relatives aux 2 services car si le service émetteur commet une erreur, un message lui sera envoyé.
Afin de s'assurer que le message est bien parti, il est possible d'interroger la table sys.transmission_queue qui contient les messages en attente d'envoie. La colonne transmission_status contient les informations relatives à l'état de la transmission.
select
* from file1;select
* from sys.transmission_queue;La liste des vues systèmes relatives à Service Broker est:
| sys.conversation_endpoints | sys.service_contract_usages |
| sys.conversation_groups | sys.service_message_types |
| sys.remote_service_binding | sys.service_queue_usages |
| sys.routes | sys.services |
| sys.service_contracts | sys.transmission_queue |
| sys.service_contract_message_usages |
Références: