SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
Service Broker, le mal-aimé
Philippe Geiger
Philippe
GEIGER
Blog
www.pgeiger.net
Courriel
pgeiger@pgeiger.net
Data Platform
Solution Consultant
Accompagnement technique
• Exploitation et administration
• Développement
• Business Intelligence
Formateur
Certifications
CRM
Collaboratif
Intégration SI
Business Intelligence
SQL Server Service Broker
Fournir la prise en charge native des applications de messagerie et de mise en file
d'attente
Existe depuis SQL Server 2005
SQL Server Service Broker est utilisé par le service de Messagerie de bases de
données et par la fonctionnalité de Notification d’événements
Fonctionne avec les éditions Express, Standard et Enterprise. Par contre, deux
éditions Express ne peuvent pas communiquer ensemble.
N’est pas disponible dans Azure SQL Database
SQL Server Service Broker : quelques usages
Déclenchements asynchrones
Collecte de données fiable
Traitement distribué côté serveur pour des applications clientes
Traitement de lots à grande échelle
SQL Server Service Broker : ses avantages
Distribuer les charges de données sur plusieurs bases de données sans
développer des mécanismes de messagerie et de communication complexes
Réduire le travail de développement et de test puisque Service Broker gère les
chemins de communication dans le contexte d'une conversation
Obtenir de bonnes performances
Garantir que toutes les tâches sont gérées dans le contexte des transactions
Service Broker
Ce n’est pas un EAI type Biztalk
Ce n’est pas un ETL type SSIS
Ce n’est pas tout à fait un service de réplication
C’est un « Broker » type MSMQ
Service Broker est intégré à la base de données
SQL Server Service Broker
Deux partie à distinguer :
L’infrastructure à mettre en place : la tuyauterie
La partie fonctionnelle : les conversations
Pour un bon Service Broker, il faut :
Pour deux serveurs distants :
 Des types de messages
 Un contrat
 Deux files d’attente
 Deux services
 Quatre itinéraires
 Deux liaisons de service distant
 Trois certificats
 Deux points de terminaison
 Quelques droits
Infrastructure
Points de terminaison
Serveur partenaire
Serveur
source
Un contexte unique :
un contrat et des types de message
Service
source
Service
partenaire
Émetteur de
messages
Consommateur de
messages
File
d’attenteItinéraire
Communication cryptée
par certificats
Les types de messages
Sont définis par un nom et un format (libre, XML et XML validé par un schéma)
CREATE MESSAGE TYPE
[//BrokerSource_BrokerPartenaire/Process1/Envoi]
AUTHORIZATION [BrokerUser] VALIDATION = WELL_FORMED_XML;
Les contrats
Sont définis par un nom
Définissent les types de messages pris en charge et les émetteurs associés
CREATE CONTRACT [//BrokerSource_BrokerPartenaire/Process1]
AUTHORIZATION [BrokerUser] (
[//BrokerSource_BrokerPartenaire/Process1/Envoi] SENT BY
INITIATOR,
[//BrokerSource_BrokerPartenaire/Process1/Retour] SENT BY
INITIATOR);
Les files d’attente / queues
Sont définies par un nom et un schéma
Contiennent les messages, sont interrogés comme des tables ou par une commande RECEIVE (dépile le
message)
Peuvent appeler une procédure stockée et peuvent prendre en charge les messages incohérents (poison)
CREATE QUEUE [BrokerUser].[ServeurSource_Process1_Queue]
WITH STATUS = ON,
RETENTION = OFF,
ACTIVATION (STATUS = ON, PROCEDURE_NAME = [BrokerUser].[ServeurSource_TraiteMessages],
MAX_QUEUE_READERS = 1, EXECUTE AS OWNER),
POISON_MESSAGE_HANDLING (STATUS = ON)
ON [DEFAULT];
Les services
Sont définis par un nom
Sont associés à une file d’attente et prennent en charge un ou plusieurs
contrats
CREATE SERVICE [//BrokerSource/Process1/Service]
AUTHORIZATION [BrokerUser]
ON QUEUE [BrokerUser].[ServeurSource_Process1_Queue]
([//BrokerSource_BrokerPartenaire/Process1]);
Les routes
Sont définies par un nom
Permettent de définir l’accès aux services locaux ou distants et donc aux files d’attente
associées
Pour les services distants, utilisent des points de terminaisons
CREATE ROUTE [//BrokerSource/Process1/Route]
AUTHORIZATION [BrokerUser]
WITH SERVICE_NAME = N'//BrokerSource/Process1/Service', ADDRESS = N'LOCAL';
CREATE ROUTE [//BrokerPartenaire/Process1/Route]
AUTHORIZATION [BrokerUser]
WITH SERVICE_NAME = N'//BrokerPartenaire/Process1/Service', ADDRESS =
N'TCP://sqlserver2016-2.northeurope.cloudapp.azure.com:4022';
Les liaisons de service distant
Sont définies par un nom
Pour les services distants, permettent de définir l’utilisateur qui portera le
certificat de cryptage
CREATE REMOTE SERVICE BINDING [//BrokerPartenaire/Process1/Binding]
AUTHORIZATION [BrokerUser]
TO SERVICE N'//BrokerPartenaire/Process1/Service'
WITH USER = [BrokerUser],
ANONYMOUS = OFF;
Service Broker
Démonstration
L’outil SSBDIAGNOSE
Une conversation à deux sens
Envoi d’un message
Ouvrir une conversation avec le service local, le service distant et le contrat
Récupérer l’identifiant
Envoyer le message en incluant le type de message
Le tout dans une transaction
Envoi d’un message
BEGIN TRANSACTION;
DECLARE @InitDlgHandle UNIQUEIDENTIFIER;
DECLARE @MsgToSend VARBINARY(MAX);
SET @MsgToSend = CAST(@MsgXML AS VARBINARY(MAX));
BEGIN DIALOG @InitDlgHandle
FROM SERVICE [//BrokerSource/Process1/Service]
TO SERVICE N'//BrokerPartenaire/Process1/Service'
ON CONTRACT [//BrokerSource_BrokerPartenaire/Process1]
WITH ENCRYPTION = ON,
LIFETIME = 1800;
SEND ON CONVERSATION @InitDlgHandle MESSAGE TYPE [//BrokerSource_BrokerPartenaire/Process1/Envoi]
(@MsgToSend);
COMMIT TRANSACTION;
Recevoir un message
Utiliser la commande RECEIVE
Éventuellement compléter par la commande WAITFOR pour limiter l’attente à
un laps de temps
Utiliser la file d’attente
Recevoir un message
WAITFOR (RECEIVE TOP(1)
@Handle = [conversation_handle],
@MessageType = [message_type_name],
@Message = [message_body]
FROM
[BrokerUser].[ServeurSource_Process1_Queue]),
TIMEOUT 1000;
Service Broker
Démonstration
Mettre fin à une conversation
IF (@MessageType = N'//BrokerSource_BrokerPartenaire/Process1/Retour') BEGIN
EXEC [dbo].[Traitement ici] @Values = @MessageXML;
COMMIT;
END CONVERSATION @Handle;
END;
ELSE IF (@MessageType = N'http://schemas.microsoft.com/SQL/ServiceBroker/EndDialog') BEGIN
COMMIT;
END CONVERSATION @Handle;
END
Un exemple
Dans une table, j’insère un nombre
Un déclencheur envoi ce nombre dans un second serveur via un message
En retour, je reçois un nouveau nombre qui est le double du premier
Je mets à jour ce nombre double dans la table
Comme j’ai stocké l’heure initiale et l’heure finale, je connais combien de temps
les deux messages ont voyagé
Service Broker
Démonstration
Questions?
Merci de votre participation

Mais conteúdo relacionado

Semelhante a 24HOP French 2016 - Service Broker, le mal-aimé, PGeiger

Rapport MS Exchange 2010
Rapport MS Exchange 2010Rapport MS Exchange 2010
Rapport MS Exchange 2010Majid CHADAD
 
Webinar SSL Français
Webinar SSL FrançaisWebinar SSL Français
Webinar SSL FrançaisSSL247®
 
Wm674 g formation-ibm-websphere-message-broker-v8-developpement-d-application...
Wm674 g formation-ibm-websphere-message-broker-v8-developpement-d-application...Wm674 g formation-ibm-websphere-message-broker-v8-developpement-d-application...
Wm674 g formation-ibm-websphere-message-broker-v8-developpement-d-application...CERTyou Formation
 
TechDays 2010 (CLO305) : Windows Azure App Fabric
TechDays 2010 (CLO305) : Windows Azure App FabricTechDays 2010 (CLO305) : Windows Azure App Fabric
TechDays 2010 (CLO305) : Windows Azure App FabricGeoffrey DANIEL
 
Authentification par certificat (clear box)
Authentification par certificat (clear box)Authentification par certificat (clear box)
Authentification par certificat (clear box)Ousmane BADJI
 
application SSL_TLS.pptx
application SSL_TLS.pptxapplication SSL_TLS.pptx
application SSL_TLS.pptxkohay75604
 
[RedHat Forum 2019] REX - COMMENT MONTER UNE OFFRE DE CLOUD EN MARQUE BLANCHE...
[RedHat Forum 2019] REX - COMMENT MONTER UNE OFFRE DE CLOUD EN MARQUE BLANCHE...[RedHat Forum 2019] REX - COMMENT MONTER UNE OFFRE DE CLOUD EN MARQUE BLANCHE...
[RedHat Forum 2019] REX - COMMENT MONTER UNE OFFRE DE CLOUD EN MARQUE BLANCHE...Worteks
 
Mise en place d’un serveur radius
Mise en place d’un serveur radiusMise en place d’un serveur radius
Mise en place d’un serveur radiusJeff Hermann Ela Aba
 
M20487 formation-developper-windows-azure-et-les-services-web
M20487 formation-developper-windows-azure-et-les-services-webM20487 formation-developper-windows-azure-et-les-services-web
M20487 formation-developper-windows-azure-et-les-services-webCERTyou Formation
 
ASFWS 2011 : CAS, OpenID, SAML concepts, différences et exemples
ASFWS 2011 : CAS, OpenID, SAML  concepts, différences et exemplesASFWS 2011 : CAS, OpenID, SAML  concepts, différences et exemples
ASFWS 2011 : CAS, OpenID, SAML concepts, différences et exemplesCyber Security Alliance
 

Semelhante a 24HOP French 2016 - Service Broker, le mal-aimé, PGeiger (20)

Rapport MS Exchange 2010
Rapport MS Exchange 2010Rapport MS Exchange 2010
Rapport MS Exchange 2010
 
Protocole Diameter
Protocole DiameterProtocole Diameter
Protocole Diameter
 
Initiation à l'intégration avec biztalk server
Initiation à l'intégration avec biztalk serverInitiation à l'intégration avec biztalk server
Initiation à l'intégration avec biztalk server
 
SSL.TLS.pptx
SSL.TLS.pptxSSL.TLS.pptx
SSL.TLS.pptx
 
Webinar SSL Français
Webinar SSL FrançaisWebinar SSL Français
Webinar SSL Français
 
radius
radiusradius
radius
 
Wm674 g formation-ibm-websphere-message-broker-v8-developpement-d-application...
Wm674 g formation-ibm-websphere-message-broker-v8-developpement-d-application...Wm674 g formation-ibm-websphere-message-broker-v8-developpement-d-application...
Wm674 g formation-ibm-websphere-message-broker-v8-developpement-d-application...
 
Présentation SOA
Présentation SOAPrésentation SOA
Présentation SOA
 
Formation1 sockets
Formation1 socketsFormation1 sockets
Formation1 sockets
 
TechDays 2010 (CLO305) : Windows Azure App Fabric
TechDays 2010 (CLO305) : Windows Azure App FabricTechDays 2010 (CLO305) : Windows Azure App Fabric
TechDays 2010 (CLO305) : Windows Azure App Fabric
 
Authentification par certificat (clear box)
Authentification par certificat (clear box)Authentification par certificat (clear box)
Authentification par certificat (clear box)
 
application SSL_TLS.pptx
application SSL_TLS.pptxapplication SSL_TLS.pptx
application SSL_TLS.pptx
 
Pourquoi migrer vers exchange 2010
Pourquoi migrer vers exchange 2010Pourquoi migrer vers exchange 2010
Pourquoi migrer vers exchange 2010
 
education
educationeducation
education
 
[RedHat Forum 2019] REX - COMMENT MONTER UNE OFFRE DE CLOUD EN MARQUE BLANCHE...
[RedHat Forum 2019] REX - COMMENT MONTER UNE OFFRE DE CLOUD EN MARQUE BLANCHE...[RedHat Forum 2019] REX - COMMENT MONTER UNE OFFRE DE CLOUD EN MARQUE BLANCHE...
[RedHat Forum 2019] REX - COMMENT MONTER UNE OFFRE DE CLOUD EN MARQUE BLANCHE...
 
Mise en place d’un serveur radius
Mise en place d’un serveur radiusMise en place d’un serveur radius
Mise en place d’un serveur radius
 
hasclic623.pdf
hasclic623.pdfhasclic623.pdf
hasclic623.pdf
 
M20487 formation-developper-windows-azure-et-les-services-web
M20487 formation-developper-windows-azure-et-les-services-webM20487 formation-developper-windows-azure-et-les-services-web
M20487 formation-developper-windows-azure-et-les-services-web
 
ASFWS 2011 : CAS, OpenID, SAML concepts, différences et exemples
ASFWS 2011 : CAS, OpenID, SAML  concepts, différences et exemplesASFWS 2011 : CAS, OpenID, SAML  concepts, différences et exemples
ASFWS 2011 : CAS, OpenID, SAML concepts, différences et exemples
 
Présentation solution signature email Crossware
Présentation solution signature email Crossware Présentation solution signature email Crossware
Présentation solution signature email Crossware
 

Mais de Philippe Geiger

Microsoft Fabric, solution décisionnelle - aMS Strasbourg 2024
Microsoft Fabric, solution décisionnelle - aMS Strasbourg 2024Microsoft Fabric, solution décisionnelle - aMS Strasbourg 2024
Microsoft Fabric, solution décisionnelle - aMS Strasbourg 2024Philippe Geiger
 
Power BI : les bonnes pratiques - aMS Strasbourg 2021
Power BI : les bonnes pratiques - aMS Strasbourg 2021Power BI : les bonnes pratiques - aMS Strasbourg 2021
Power BI : les bonnes pratiques - aMS Strasbourg 2021Philippe Geiger
 
SQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les Notebooks
SQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les NotebooksSQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les Notebooks
SQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les NotebooksPhilippe Geiger
 
SQL Saturday Haïti 2023 - Azure Data Factory pour les nuls
SQL Saturday Haïti 2023 - Azure Data Factory pour les nulsSQL Saturday Haïti 2023 - Azure Data Factory pour les nuls
SQL Saturday Haïti 2023 - Azure Data Factory pour les nulsPhilippe Geiger
 
Meetup Club Power BI - Power BI Embedded, mai 2023
Meetup Club Power BI - Power BI Embedded, mai 2023Meetup Club Power BI - Power BI Embedded, mai 2023
Meetup Club Power BI - Power BI Embedded, mai 2023Philippe Geiger
 
Meetup Club Power BI Power BI et IA mars 2023
Meetup Club Power BI Power BI et IA mars 2023Meetup Club Power BI Power BI et IA mars 2023
Meetup Club Power BI Power BI et IA mars 2023Philippe Geiger
 
PPFS 2022 - Créer des rapports parfaits Power BI
PPFS 2022 - Créer des rapports parfaits Power BIPPFS 2022 - Créer des rapports parfaits Power BI
PPFS 2022 - Créer des rapports parfaits Power BIPhilippe Geiger
 
Meetup Club Power BI Strasbourg novembre 2022 Histoire de Power BI
Meetup Club Power BI Strasbourg novembre 2022 Histoire de Power BIMeetup Club Power BI Strasbourg novembre 2022 Histoire de Power BI
Meetup Club Power BI Strasbourg novembre 2022 Histoire de Power BIPhilippe Geiger
 
Meetup Club Power BI Strasbourg - Power BI Goals
Meetup Club Power BI Strasbourg - Power BI GoalsMeetup Club Power BI Strasbourg - Power BI Goals
Meetup Club Power BI Strasbourg - Power BI GoalsPhilippe Geiger
 
Meetup Club Power BI Strasbourg - introduction Power BI Report Builder
Meetup Club Power BI Strasbourg - introduction Power BI Report BuilderMeetup Club Power BI Strasbourg - introduction Power BI Report Builder
Meetup Club Power BI Strasbourg - introduction Power BI Report BuilderPhilippe Geiger
 
SQL Saturday Haïti 2022 - Débuter avec Azure pour les DBA.pptx
SQL Saturday Haïti 2022 - Débuter avec Azure pour les DBA.pptxSQL Saturday Haïti 2022 - Débuter avec Azure pour les DBA.pptx
SQL Saturday Haïti 2022 - Débuter avec Azure pour les DBA.pptxPhilippe Geiger
 
SQL Saturday Haïti 2022 - Power BI, les bonnes pratiques.pptx
SQL Saturday Haïti 2022 - Power BI, les bonnes pratiques.pptxSQL Saturday Haïti 2022 - Power BI, les bonnes pratiques.pptx
SQL Saturday Haïti 2022 - Power BI, les bonnes pratiques.pptxPhilippe Geiger
 
202112 meetup all - noel - strasbourg
202112   meetup all - noel - strasbourg202112   meetup all - noel - strasbourg
202112 meetup all - noel - strasbourgPhilippe Geiger
 
SQL Saturday Paris 2018 - DBA Tooling - PGeiger
SQL Saturday Paris 2018 - DBA Tooling - PGeigerSQL Saturday Paris 2018 - DBA Tooling - PGeiger
SQL Saturday Paris 2018 - DBA Tooling - PGeigerPhilippe Geiger
 
Choisir sa solution décisionnelle - Partie 3 - Visualisation et analyse de do...
Choisir sa solution décisionnelle - Partie 3 - Visualisation et analyse de do...Choisir sa solution décisionnelle - Partie 3 - Visualisation et analyse de do...
Choisir sa solution décisionnelle - Partie 3 - Visualisation et analyse de do...Philippe Geiger
 
24HOP French 2017 - Azure Machine Learning par l'exemple
24HOP French 2017 - Azure Machine Learning par l'exemple24HOP French 2017 - Azure Machine Learning par l'exemple
24HOP French 2017 - Azure Machine Learning par l'exemplePhilippe Geiger
 
Choisir sa solution décisionnelle - Partie 2 - Des modèles à l’analyse
Choisir sa solution décisionnelle - Partie 2 - Des modèles à l’analyseChoisir sa solution décisionnelle - Partie 2 - Des modèles à l’analyse
Choisir sa solution décisionnelle - Partie 2 - Des modèles à l’analysePhilippe Geiger
 
Choisir sa solution décisionnelle - Partie 1 - Acquisition des données
Choisir sa solution décisionnelle - Partie 1 - Acquisition des donnéesChoisir sa solution décisionnelle - Partie 1 - Acquisition des données
Choisir sa solution décisionnelle - Partie 1 - Acquisition des donnéesPhilippe Geiger
 
SQL Saturday 510 Paris 2016 - Query Store session - final
SQL Saturday 510 Paris 2016 - Query Store session - finalSQL Saturday 510 Paris 2016 - Query Store session - final
SQL Saturday 510 Paris 2016 - Query Store session - finalPhilippe Geiger
 
Panorama de l'écosystème Microsoft Data Platform
Panorama de l'écosystème Microsoft Data PlatformPanorama de l'écosystème Microsoft Data Platform
Panorama de l'écosystème Microsoft Data PlatformPhilippe Geiger
 

Mais de Philippe Geiger (20)

Microsoft Fabric, solution décisionnelle - aMS Strasbourg 2024
Microsoft Fabric, solution décisionnelle - aMS Strasbourg 2024Microsoft Fabric, solution décisionnelle - aMS Strasbourg 2024
Microsoft Fabric, solution décisionnelle - aMS Strasbourg 2024
 
Power BI : les bonnes pratiques - aMS Strasbourg 2021
Power BI : les bonnes pratiques - aMS Strasbourg 2021Power BI : les bonnes pratiques - aMS Strasbourg 2021
Power BI : les bonnes pratiques - aMS Strasbourg 2021
 
SQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les Notebooks
SQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les NotebooksSQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les Notebooks
SQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les Notebooks
 
SQL Saturday Haïti 2023 - Azure Data Factory pour les nuls
SQL Saturday Haïti 2023 - Azure Data Factory pour les nulsSQL Saturday Haïti 2023 - Azure Data Factory pour les nuls
SQL Saturday Haïti 2023 - Azure Data Factory pour les nuls
 
Meetup Club Power BI - Power BI Embedded, mai 2023
Meetup Club Power BI - Power BI Embedded, mai 2023Meetup Club Power BI - Power BI Embedded, mai 2023
Meetup Club Power BI - Power BI Embedded, mai 2023
 
Meetup Club Power BI Power BI et IA mars 2023
Meetup Club Power BI Power BI et IA mars 2023Meetup Club Power BI Power BI et IA mars 2023
Meetup Club Power BI Power BI et IA mars 2023
 
PPFS 2022 - Créer des rapports parfaits Power BI
PPFS 2022 - Créer des rapports parfaits Power BIPPFS 2022 - Créer des rapports parfaits Power BI
PPFS 2022 - Créer des rapports parfaits Power BI
 
Meetup Club Power BI Strasbourg novembre 2022 Histoire de Power BI
Meetup Club Power BI Strasbourg novembre 2022 Histoire de Power BIMeetup Club Power BI Strasbourg novembre 2022 Histoire de Power BI
Meetup Club Power BI Strasbourg novembre 2022 Histoire de Power BI
 
Meetup Club Power BI Strasbourg - Power BI Goals
Meetup Club Power BI Strasbourg - Power BI GoalsMeetup Club Power BI Strasbourg - Power BI Goals
Meetup Club Power BI Strasbourg - Power BI Goals
 
Meetup Club Power BI Strasbourg - introduction Power BI Report Builder
Meetup Club Power BI Strasbourg - introduction Power BI Report BuilderMeetup Club Power BI Strasbourg - introduction Power BI Report Builder
Meetup Club Power BI Strasbourg - introduction Power BI Report Builder
 
SQL Saturday Haïti 2022 - Débuter avec Azure pour les DBA.pptx
SQL Saturday Haïti 2022 - Débuter avec Azure pour les DBA.pptxSQL Saturday Haïti 2022 - Débuter avec Azure pour les DBA.pptx
SQL Saturday Haïti 2022 - Débuter avec Azure pour les DBA.pptx
 
SQL Saturday Haïti 2022 - Power BI, les bonnes pratiques.pptx
SQL Saturday Haïti 2022 - Power BI, les bonnes pratiques.pptxSQL Saturday Haïti 2022 - Power BI, les bonnes pratiques.pptx
SQL Saturday Haïti 2022 - Power BI, les bonnes pratiques.pptx
 
202112 meetup all - noel - strasbourg
202112   meetup all - noel - strasbourg202112   meetup all - noel - strasbourg
202112 meetup all - noel - strasbourg
 
SQL Saturday Paris 2018 - DBA Tooling - PGeiger
SQL Saturday Paris 2018 - DBA Tooling - PGeigerSQL Saturday Paris 2018 - DBA Tooling - PGeiger
SQL Saturday Paris 2018 - DBA Tooling - PGeiger
 
Choisir sa solution décisionnelle - Partie 3 - Visualisation et analyse de do...
Choisir sa solution décisionnelle - Partie 3 - Visualisation et analyse de do...Choisir sa solution décisionnelle - Partie 3 - Visualisation et analyse de do...
Choisir sa solution décisionnelle - Partie 3 - Visualisation et analyse de do...
 
24HOP French 2017 - Azure Machine Learning par l'exemple
24HOP French 2017 - Azure Machine Learning par l'exemple24HOP French 2017 - Azure Machine Learning par l'exemple
24HOP French 2017 - Azure Machine Learning par l'exemple
 
Choisir sa solution décisionnelle - Partie 2 - Des modèles à l’analyse
Choisir sa solution décisionnelle - Partie 2 - Des modèles à l’analyseChoisir sa solution décisionnelle - Partie 2 - Des modèles à l’analyse
Choisir sa solution décisionnelle - Partie 2 - Des modèles à l’analyse
 
Choisir sa solution décisionnelle - Partie 1 - Acquisition des données
Choisir sa solution décisionnelle - Partie 1 - Acquisition des donnéesChoisir sa solution décisionnelle - Partie 1 - Acquisition des données
Choisir sa solution décisionnelle - Partie 1 - Acquisition des données
 
SQL Saturday 510 Paris 2016 - Query Store session - final
SQL Saturday 510 Paris 2016 - Query Store session - finalSQL Saturday 510 Paris 2016 - Query Store session - final
SQL Saturday 510 Paris 2016 - Query Store session - final
 
Panorama de l'écosystème Microsoft Data Platform
Panorama de l'écosystème Microsoft Data PlatformPanorama de l'écosystème Microsoft Data Platform
Panorama de l'écosystème Microsoft Data Platform
 

24HOP French 2016 - Service Broker, le mal-aimé, PGeiger

  • 1. Service Broker, le mal-aimé Philippe Geiger
  • 2. Philippe GEIGER Blog www.pgeiger.net Courriel pgeiger@pgeiger.net Data Platform Solution Consultant Accompagnement technique • Exploitation et administration • Développement • Business Intelligence Formateur Certifications CRM Collaboratif Intégration SI Business Intelligence
  • 3. SQL Server Service Broker Fournir la prise en charge native des applications de messagerie et de mise en file d'attente Existe depuis SQL Server 2005 SQL Server Service Broker est utilisé par le service de Messagerie de bases de données et par la fonctionnalité de Notification d’événements Fonctionne avec les éditions Express, Standard et Enterprise. Par contre, deux éditions Express ne peuvent pas communiquer ensemble. N’est pas disponible dans Azure SQL Database
  • 4. SQL Server Service Broker : quelques usages Déclenchements asynchrones Collecte de données fiable Traitement distribué côté serveur pour des applications clientes Traitement de lots à grande échelle
  • 5. SQL Server Service Broker : ses avantages Distribuer les charges de données sur plusieurs bases de données sans développer des mécanismes de messagerie et de communication complexes Réduire le travail de développement et de test puisque Service Broker gère les chemins de communication dans le contexte d'une conversation Obtenir de bonnes performances Garantir que toutes les tâches sont gérées dans le contexte des transactions
  • 6. Service Broker Ce n’est pas un EAI type Biztalk Ce n’est pas un ETL type SSIS Ce n’est pas tout à fait un service de réplication C’est un « Broker » type MSMQ Service Broker est intégré à la base de données
  • 7. SQL Server Service Broker Deux partie à distinguer : L’infrastructure à mettre en place : la tuyauterie La partie fonctionnelle : les conversations
  • 8. Pour un bon Service Broker, il faut : Pour deux serveurs distants :  Des types de messages  Un contrat  Deux files d’attente  Deux services  Quatre itinéraires  Deux liaisons de service distant  Trois certificats  Deux points de terminaison  Quelques droits
  • 9. Infrastructure Points de terminaison Serveur partenaire Serveur source Un contexte unique : un contrat et des types de message Service source Service partenaire Émetteur de messages Consommateur de messages File d’attenteItinéraire Communication cryptée par certificats
  • 10. Les types de messages Sont définis par un nom et un format (libre, XML et XML validé par un schéma) CREATE MESSAGE TYPE [//BrokerSource_BrokerPartenaire/Process1/Envoi] AUTHORIZATION [BrokerUser] VALIDATION = WELL_FORMED_XML;
  • 11. Les contrats Sont définis par un nom Définissent les types de messages pris en charge et les émetteurs associés CREATE CONTRACT [//BrokerSource_BrokerPartenaire/Process1] AUTHORIZATION [BrokerUser] ( [//BrokerSource_BrokerPartenaire/Process1/Envoi] SENT BY INITIATOR, [//BrokerSource_BrokerPartenaire/Process1/Retour] SENT BY INITIATOR);
  • 12. Les files d’attente / queues Sont définies par un nom et un schéma Contiennent les messages, sont interrogés comme des tables ou par une commande RECEIVE (dépile le message) Peuvent appeler une procédure stockée et peuvent prendre en charge les messages incohérents (poison) CREATE QUEUE [BrokerUser].[ServeurSource_Process1_Queue] WITH STATUS = ON, RETENTION = OFF, ACTIVATION (STATUS = ON, PROCEDURE_NAME = [BrokerUser].[ServeurSource_TraiteMessages], MAX_QUEUE_READERS = 1, EXECUTE AS OWNER), POISON_MESSAGE_HANDLING (STATUS = ON) ON [DEFAULT];
  • 13. Les services Sont définis par un nom Sont associés à une file d’attente et prennent en charge un ou plusieurs contrats CREATE SERVICE [//BrokerSource/Process1/Service] AUTHORIZATION [BrokerUser] ON QUEUE [BrokerUser].[ServeurSource_Process1_Queue] ([//BrokerSource_BrokerPartenaire/Process1]);
  • 14. Les routes Sont définies par un nom Permettent de définir l’accès aux services locaux ou distants et donc aux files d’attente associées Pour les services distants, utilisent des points de terminaisons CREATE ROUTE [//BrokerSource/Process1/Route] AUTHORIZATION [BrokerUser] WITH SERVICE_NAME = N'//BrokerSource/Process1/Service', ADDRESS = N'LOCAL'; CREATE ROUTE [//BrokerPartenaire/Process1/Route] AUTHORIZATION [BrokerUser] WITH SERVICE_NAME = N'//BrokerPartenaire/Process1/Service', ADDRESS = N'TCP://sqlserver2016-2.northeurope.cloudapp.azure.com:4022';
  • 15. Les liaisons de service distant Sont définies par un nom Pour les services distants, permettent de définir l’utilisateur qui portera le certificat de cryptage CREATE REMOTE SERVICE BINDING [//BrokerPartenaire/Process1/Binding] AUTHORIZATION [BrokerUser] TO SERVICE N'//BrokerPartenaire/Process1/Service' WITH USER = [BrokerUser], ANONYMOUS = OFF;
  • 18. Une conversation à deux sens
  • 19. Envoi d’un message Ouvrir une conversation avec le service local, le service distant et le contrat Récupérer l’identifiant Envoyer le message en incluant le type de message Le tout dans une transaction
  • 20. Envoi d’un message BEGIN TRANSACTION; DECLARE @InitDlgHandle UNIQUEIDENTIFIER; DECLARE @MsgToSend VARBINARY(MAX); SET @MsgToSend = CAST(@MsgXML AS VARBINARY(MAX)); BEGIN DIALOG @InitDlgHandle FROM SERVICE [//BrokerSource/Process1/Service] TO SERVICE N'//BrokerPartenaire/Process1/Service' ON CONTRACT [//BrokerSource_BrokerPartenaire/Process1] WITH ENCRYPTION = ON, LIFETIME = 1800; SEND ON CONVERSATION @InitDlgHandle MESSAGE TYPE [//BrokerSource_BrokerPartenaire/Process1/Envoi] (@MsgToSend); COMMIT TRANSACTION;
  • 21. Recevoir un message Utiliser la commande RECEIVE Éventuellement compléter par la commande WAITFOR pour limiter l’attente à un laps de temps Utiliser la file d’attente
  • 22. Recevoir un message WAITFOR (RECEIVE TOP(1) @Handle = [conversation_handle], @MessageType = [message_type_name], @Message = [message_body] FROM [BrokerUser].[ServeurSource_Process1_Queue]), TIMEOUT 1000;
  • 24. Mettre fin à une conversation IF (@MessageType = N'//BrokerSource_BrokerPartenaire/Process1/Retour') BEGIN EXEC [dbo].[Traitement ici] @Values = @MessageXML; COMMIT; END CONVERSATION @Handle; END; ELSE IF (@MessageType = N'http://schemas.microsoft.com/SQL/ServiceBroker/EndDialog') BEGIN COMMIT; END CONVERSATION @Handle; END
  • 25. Un exemple Dans une table, j’insère un nombre Un déclencheur envoi ce nombre dans un second serveur via un message En retour, je reçois un nouveau nombre qui est le double du premier Je mets à jour ce nombre double dans la table Comme j’ai stocké l’heure initiale et l’heure finale, je connais combien de temps les deux messages ont voyagé
  • 28. Merci de votre participation