Compartir vía


Recibir notificaciones de consulta en varias ubicaciones de recepción de SQL mediante BizTalk Server

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, Empleado) 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 consulta incrementalmente desde SQL 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 consulta incrementalmente desde SQL mediante BizTalk Server, ha configurado notificaciones incrementales mediante la ejecución de una instrucción UPDATE en los registros que ya se han notificado. 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 PROCESS_EMPLOYEE con la siguiente definición:

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  

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 PROCESS_EMPLOYEE procedimiento almacenado (operación de salida).

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

  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 PROCESS_EMPLOYEE. 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 almacenado PROCESS_EMPLOYEE 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 consulta incrementalmente desde SQL 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 SQL.

  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-SQL.

    Propiedad de enlace Importancia
    InboundOperationType Establézcalo en Notificación.
    NotificationStatement Establézcalo en:

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

    Nota: Para las instrucciones de notificación, siempre debe especificar el nombre de la tabla junto con el nombre del esquema. Por ejemplo: dbo.Employee.
    NotifyOnListenerStart Establézcalo en True.
  6. Inicie la aplicación de BizTalk.

  7. Para empezar a recibir notificaciones, inserte cien registros en la tabla EMPLOYEE. Al hacerlo, asegúrese de que el XML de solicitud para invocar el PROCESS_EMPLOYEE procedimiento almacenado 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

Recibir notificaciones de consulta SQL mediante BizTalk Server