Compartir vía


Recepción de notificaciones de cambios de Oracle Database en varias ubicaciones de recepción

Considere un escenario en el que tiene varias ubicaciones de recepción creadas como parte de diferentes aplicaciones de BizTalk configuradas para recibir notificaciones de consulta para la misma tabla (por ejemplo, ACCOUNTACTIVITY) en la misma base de datos. Si se insertan cien registros en la misma tabla, todas las ubicaciones de recepción recibirán el mensaje de notificación. Para recibir notificaciones de manera eficaz en varias ubicaciones receptoras, puede llamar a las operaciones desde su aplicación de BizTalk de tal manera que, si una notificación es recibida por una ubicación receptora, la otra ubicación receptora no recibe la misma notificación. Puede equilibrar la carga de manera eficaz de las notificaciones recibidas en varias ubicaciones.

Las tareas necesarias para configurar una orquestación para equilibrar la carga de las notificaciones de recepción son las mismas que para recibir notificaciones de cambio de base de datos de Oracle incrementalmente mediante BizTalk Server. En este tema se muestra la única diferencia entre los dos enfoques.

Load-Balancing Notificaciones de consulta en varias ubicaciones de recepción

Al igual que en el tema Recibir notificaciones de cambio de base de datos de Oracle incrementalmente mediante BizTalk Server, configuró notificaciones incrementales ejecutando el procedimiento PROCESS_RECORDS. Para configurar el equilibrio de carga, puede ejecutar un procedimiento almacenado que elimine los registros que se han notificado. Por ejemplo, considere un procedimiento almacenado NOTIFY_LOAD_BALANCE con la siguiente definición:

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;

Al ejecutar este procedimiento almacenado como parte de la aplicación de BizTalk, se elimina el registro para el que ya se ha recibido la notificación. Por lo tanto, la otra ubicación de recepción recibe una notificación para el siguiente registro.

Estos son los pasos generales que debe realizar para configurar el equilibrio de carga para recibir notificaciones.

  1. Cree un esquema para notificación (operación de entrada) y NOTIFY_LOAD_BALANCE procedimiento (operación de salida).

  2. Agregue una orquestación y agregue tres mensajes para recibir notificaciones, ejecutar el procedimiento y obtener respuesta para el procedimiento.

  3. Cree una orquestación agregando formas de envío y recepción, forma de construcción de mensaje y puertos. Puede usar el mismo código de ejemplo para construir un mensaje para invocar el procedimiento almacenado NOTIFY_LOAD_BALANCE. Tenga en cuenta que, al realizar la operación en la consola de administración de BizTalk Server, debe tener el mensaje de solicitud para el procedimiento NOTIFY_LOAD_BALANCE en la ubicación C:\TestLocation\MessageIn. Lo hace porque el fragmento de código que invoca como parte de la orquestación creada en Recibir notificaciones de cambio de base de datos de Oracle de forma incremental mediante BizTalk Server crea un mensaje de solicitud basado en el XML de solicitud presente en C:\TestLocation\MessageIn.

  4. Compile e implemente la aplicación. Para demostrar el equilibrio de carga, debe implementar esta orquestación al menos en dos equipos diferentes que tengan instalado BizTalk Server y el adaptador de base de datos de Oracle.

  5. En la consola de administración de BizTalk Server en ambos equipos, especifique las siguientes propiedades de vinculación para la ubicación de recepción WCF-Custom o la WCF-OracleDB.

    Propiedad de enlace Importancia
    InboundOperationType Establézcalo en Notificación.
    NotificationPort Especifica el número de puerto que ODP.NET debe abrir para escuchar la notificación de cambio de base de datos de Oracle. Establézcalo en el mismo número de puerto que debe haber agregado a la lista de excepciones del Firewall de Windows. Para obtener instrucciones sobre cómo agregar puertos a la lista de excepciones de Firewall de Windows, consulte https://go.microsoft.com/fwlink/?LinkID=196959. Importante: Si estableces esto en el valor predeterminado de -1, tendrás que deshabilitar completamente firewall de Windows para recibir mensajes de notificación.
    NotificationStatement Establézcalo en:

    SELECT TID,ACCOUNT,PROCESSED FROM SCOTT.ACCOUNTACTIVITY WHERE PROCESSED = ‘n’ Nota: Debe especificar el nombre de la tabla junto con el nombre del esquema. Por ejemplo: SCOTT.ACCOUNTACTIVITY.
    NotifyOnListenerStart Establézcalo en True.
  6. Inicie la aplicación de BizTalk.

  7. Para empezar a recibir notificaciones, inserte cien registros en la tabla ACCOUNTACTIVITY. Al hacerlo, asegúrese de que el XML de solicitud para invocar el procedimiento NOTIFY_LOAD_BALANCE está disponible en C:\TestLocation\MessageIn.

  8. Monitoree la ubicación (en ambos equipos) donde la aplicación de BizTalk depositará los mensajes de notificación. Observará que de los cientos de registros insertados, una ubicación obtiene notificaciones para algunos registros, mientras que la otra ubicación obtiene una notificación para los registros restantes. Juntos, ambas ubicaciones recibirán notificaciones para todos los cientos de registros.

Véase también

Recepción de notificaciones de cambio de base de datos de Oracle de forma incremental mediante BizTalk Server