Partager via


Recevoir des notifications de requête sur plusieurs emplacements de réception à partir de SQL à l’aide de BizTalk Server

Imaginez un scénario où vous avez plusieurs emplacements de réception créés dans le cadre de différentes applications BizTalk configurées pour recevoir des notifications de requête pour la même table (par exemple, Employee) dans la même base de données. Si une centaine d’enregistrements sont insérés dans la même table, tous les emplacements de réception reçoivent le message de notification. Pour recevoir efficacement des notifications sur plusieurs emplacements de réception, vous pouvez appeler des opérations à partir de votre application BizTalk de telle sorte que si une notification est reçue par un emplacement de réception, l’autre emplacement de réception n’obtient pas la même notification. Ainsi, vous pouvez efficacement équilibrer la charge des notifications reçues sur plusieurs emplacements.

Les tâches requises pour configurer une orchestration pour équilibrer la charge de réception des notifications sont les mêmes que pour recevoir des notifications de requête de manière incrémentielle à partir de SQL à l’aide de BizTalk Server. Cette rubrique répertorie la seule différence entre les deux approches.

Load-Balancing notifications de requête entre plusieurs emplacements de réception

Comme dans la rubrique Recevoir des notifications de requête de manière incrémentielle à partir de SQL à l’aide de BizTalk Server, vous avez configuré des notifications incrémentielles en exécutant une instruction UPDATE sur les enregistrements déjà notifiés. Pour configurer l’équilibrage de charge, vous pouvez exécuter une procédure stockée qui supprime les enregistrements qui ont été notifiés. Par exemple, considérez une procédure stockée PROCESS_EMPLOYEE avec la définition suivante :

DECLARE @var int  
SELECT TOP 1 @var = Employee_ID FROM Employee  
SELECT * FROM Employee WHERE Employee_ID=@var  
DELETE FROM Employee WHERE Employee_ID=@var  

Lorsque vous exécutez cette procédure stockée dans le cadre de l’application BizTalk, l’enregistrement pour lequel la notification est déjà reçue est supprimé. Par conséquent, l’autre emplacement de réception reçoit une notification pour l’enregistrement suivant.

Voici les étapes générales que vous devez effectuer pour configurer l’équilibrage de charge pour la réception des notifications.

  1. Créez un schéma pour notification (opération entrante) et PROCESS_EMPLOYEE procédure stockée (opération sortante).

  2. Ajoutez une orchestration et ajoutez trois messages pour recevoir une notification, exécuter une procédure stockée et obtenir une réponse pour la procédure stockée.

  3. Créez une orchestration en ajoutant des formes d’envoi et de réception, une forme de message de construction et des ports. Vous pouvez utiliser le même exemple de code pour construire un message afin d’appeler la procédure stockée PROCESS_EMPLOYEE. Notez que lors de l’exécution de l’opération dans BizTalk Server console Administration, vous devez avoir le message de demande pour la procédure stockée PROCESS_EMPLOYEE à l’emplacement C :\TestLocation\MessageIn. Vous le faites parce que l’extrait de code que vous appelez dans le cadre de l’orchestration créée dans Recevoir des notifications de requête de manière incrémentielle à partir de SQL à l’aide de BizTalk Server crée un message de requête basé sur le CODE XML de requête présent dans C :\TestLocation\MessageIn.

  4. Générez et déployez l’application. Pour illustrer l’équilibrage de charge, vous devez déployer cette orchestration au moins sur deux ordinateurs différents sur lesquels BizTalk Server et l’adaptateur SQL sont installés.

  5. Dans la console Administration BizTalk Server sur les deux ordinateurs, spécifiez les propriétés de liaison suivantes pour l’emplacement de réception WCF-Custom ou WCF-SQL :

    Binding, propriété Valeur
    InboundOperationType Définissez cette valeur sur Notification.
    NotificationStatement Définissez cette valeur sur :

    SELECT Employee_ID, Name FROM dbo.Employee WHERE Status=0

    Note: Pour les instructions de notification, vous devez toujours spécifier le nom de la table ainsi que le nom du schéma. Par exemple : dbo.Employee.
    NotifyOnListenerStart Définissez cette valeur sur True.
  6. Démarrez l’application BizTalk.

  7. Pour commencer à recevoir des notifications, insérez une centaine d’enregistrements dans la table EMPLOYEE. Ce faisant, assurez-vous que le code XML de demande d’appel de la procédure stockée PROCESS_EMPLOYEE est disponible dans C :\TestLocation\MessageIn.

  8. Surveillez l’emplacement (sur les deux ordinateurs) où l’application BizTalk supprime les messages de notification. Vous remarquerez que sur la centaine d’enregistrements insérés, un emplacement reçoit des notifications pour certains enregistrements, tandis que l’autre emplacement reçoit une notification pour les enregistrements restants. Ensemble, les deux emplacements recevront une notification pour les cent enregistrements.

Voir aussi

Recevoir des notifications de requête SQL à l’aide de BizTalk Server