Compartir a través de


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 forma eficaz en varias ubicaciones de recepción, puede llamar a operaciones desde la aplicación de BizTalk de forma que, si una ubicación de recepción recibe una notificación, la otra ubicación de recepción no recibe la misma notificación. Por lo tanto, puede equilibrar la carga eficazmente 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 las 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, ha configurado notificaciones incrementales mediante la ejecución de un procedimiento de 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;

Cuando se ejecuta este procedimiento almacenado como parte de la aplicación de BizTalk, se elimina el registro para el que ya se recibe 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 de alto nivel 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 mediante la adición de formas de envío y recepción, forma Construir 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 BizTalk Server consola de administración, 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 Oracle Database.

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

    Binding (propiedad) Value
    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 del 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 Establezca esta opción 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. Supervise la ubicación (en ambos equipos) donde la aplicación de BizTalk quitará 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 recibe una notificación para los registros restantes. Juntas, ambas ubicaciones recibirán una notificación para todos los cientos de registros.

Consulte también

Recibir notificaciones de cambio de base de datos de Oracle incrementalmente mediante BizTalk Server