Partager via


Recevoir des notifications de modification Oracle Database sur plusieurs emplacements de réception

Prenons l’exemple d’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, ACCOUNTACTIVITY) 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 équilibrer efficacement la charge des notifications reçues sur plusieurs emplacements.

Les tâches requises pour configurer une orchestration afin d’équilibrer la charge de réception des notifications sont identiques à celles de la réception incrémentielle des notifications de modification de base de données Oracle à l’aide de BizTalk Server. Cette rubrique répertorie la seule différence entre les deux approches.

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

Comme dans la rubrique Réception incrémentielle des notifications de modification de base de données Oracle à l’aide de BizTalk Server, vous avez configuré des notifications incrémentielles en exécutant une procédure de PROCESS_RECORDS. 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 NOTIFY_LOAD_BALANCE avec la définition suivante :

PROCEDURE NOTIFY_LOAD_BALANCE (TABLE_DATA OUT SYS_REFCURSOR) IS
  var int;
BEGIN
  SELECT TID INTO var FROM ACCOUNTACTIVITY WHERE ROWNUM = 1 FOR UPDATE;
  OPEN TABLE_DATA FOR SELECT * FROM ACCOUNTACTIVITY WHERE TID = var;
  DELETE FROM ACCOUNTACTIVITY WHERE TID = var;
END NOTIFY_LOAD_BALANCE;

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é. Ainsi, 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 de notifications.

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

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

  3. Créez une orchestration en ajoutant des formes d’envoi et de réception, une forme de construction de message et des ports. Vous pouvez utiliser le même exemple de code pour construire un message afin d’appeler la procédure stockée NOTIFY_LOAD_BALANCE. 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 NOTIFY_LOAD_BALANCE à l’emplacement C :\TestLocation\MessageIn. Vous le faites, car l’extrait de code que vous appelez dans le cadre de l’orchestration créée dans Réception de notifications de modification de base de données Oracle de manière incrémentielle à l’aide de BizTalk Server crée un message de requête basé sur le XML de la demande 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 Oracle Database sont installés.

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

    Binding, propriété Valeur
    InboundOperationType Définissez cette valeur sur Notification.
    NotificationPort Spécifie le numéro de port que ODP.NET devez ouvrir pour écouter la notification de modification de la base de données Oracle. Définissez-le sur le même numéro de port que vous devez avoir ajouté à la liste des exceptions du Pare-feu Windows. Pour obtenir des instructions sur l’ajout de ports à la liste des exceptions du Pare-feu Windows, consultez https://go.microsoft.com/fwlink/?LinkID=196959. Important: Si vous définissez cette valeur sur la valeur par défaut -1, vous devrez désactiver complètement le Pare-feu Windows pour recevoir des messages de notification.
    NotificationStatement Définissez cette valeur sur :

    SELECT TID,ACCOUNT,PROCESSED FROM SCOTT.ACCOUNTACTIVITY WHERE PROCESSED = ‘n’Note: Vous devez spécifier le nom de la table ainsi que le nom du schéma. Par exemple : SCOTT.ACCOUNTACTIVITY.
    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 ACCOUNTACTIVITY. Dans ce cas, assurez-vous que le code XML de demande d’appel de la procédure NOTIFY_LOAD_BALANCE est disponible dans C :\TestLocation\MessageIn.

  8. Surveillez l’emplacement (sur les deux ordinateurs) où l’application BizTalk supprimera 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

Réception incrémentielle de notifications de modification de base de données Oracle à l’aide de BizTalk Server