Compartir a través de


Ejemplo DynamicReceive (ejemplo de BizTalk Server)

El ejemplo DynamicReceive muestra cómo recibir BizTalk Server mensajes de una cola MQSeries cuando el URI de la cola MQSeries se especifica dinámicamente.

Descripción del ejemplo

En este ejemplo se crea dinámicamente una cola MQSeries como se especifica en las variables queueManager, queue y server . Habilita un escenario de recepción dinámico y obtiene BizTalk Server mensajes de la cola MQSeries especificada dinámicamente según los criterios de filtro especificados en las propiedades de mensaje de MQMD_MsgId y MQMD_CorrelId.

Cómo y por qué se ha diseñado este ejemplo

El adaptador MQSeries puede recibir mensajes de forma dinámica desde una cola de MQSeries mediante la especificación de la dirección de URI de la cola en la orquestación. Esta funcionalidad se consigue mediante un puerto de envío de petición-respuesta en la orquestación.

Para recibir mensajes dinámicamente, especifique lo siguiente en una forma expresión de la orquestación:

  1. Habilite la recepción dinámica estableciendo la siguiente propiedad en el mensaje BizTalk Server: MQSeries.DynamicReceive = 'Yes'

  2. Especifique la dirección a partir de la que obtener los mensajes mediante la configuración del puerto URI. Puede especificar opcionalmente lo siguiente:

    • Especifique el intervalo de espera antes de obtener los mensajes mediante la propiedad MQSeries.WaitInterval en el mensaje.

    • Especificar los criterios de coincidencia para los mensajes de recepción. Las opciones de criterios de coincidencia son Id. de mensaje, CorrelationID, GroupID y MessageSequenceNumber. Vea "Propiedades relacionadas con BizTalk Server" para https://go.microsoft.com/fwlink/?LinkId=89396 obtener más detalles.

    Después de que se cree el mensaje con estas propiedades, se envía a la cola de MQSeries mediante un puerto de envío de petición-respuesta. El puerto especifica el adaptador para recibir mensajes a partir de la URI especificada con las opciones de coincidencia indicada. Se producen las siguientes acciones:

  • Si los criterios de filtro para obtener un mensaje se satisfacen, el mensaje se recupera de la cola y se vuelve a enviar a la orquestación.

  • Si los criterios de filtro para obtener un mensaje no se satisfacen, se devuelve una respuesta ficticia. Esta es una indicación de que las opciones especificadas no han devuelto ningún mensaje de la cola.

    La funcionalidad de recepción dinámica proporciona una flexibilidad adicional debido a que no es necesaria una ubicación de recepción fija. En algunos casos, puede que no conozca el URI hasta el tiempo de ejecución. La funcionalidad de recepción dinámica permite determinar de forma dinámica de dónde obtener los mensajes. También significa que no necesita implementar un contrato de cola dentro de una orquestación. Puede esperar a obtener mensajes mediante la utilización de un URI dinámico especificado de una cola de MQSeries que se base en los criterios de coincidencia especificados.

Ubicación del ejemplo

<Ruta de acceso de> ejemplos\Samples\AdaptersUsage\MQSeriesAdapter\DynamicReceive

En la tabla siguiente se enumeran los archivos del ejemplo y se describe su propósito.

Archivo Descripción
DynamicReceive.btproj,

DynamicReceive.sln
Archivos de proyectos y soluciones para la aplicación.
DynamicReceive e.odx El archivo de orquestación de BizTalk para la aplicación.
Setup.bat Archivo por lotes para crear el archivo de clave, compilar el proyecto e implementarlo.

Uso del ejemplo

Especifique Microsoft.XLANGs.BaseTypes.Address que tenga sentido para la solución. Cambie MQSeries.WaitInterval para especificar cuándo espera recibir los mensajes de respuesta. Actualice (o agregue) las opciones de coincidencia o quítelas si tiene previsto obtener todos los mensajes.

Compilación y ejecución del ejemplo

Para crear el ejemplo

  1. Cree un nuevo proyecto de orquestación en Microsoft Visual Studio.

  2. Habilite la operación de recepción dinámica estableciendo la propiedad MQSeries.DynamicReceive en el mensaje BizTalk Server en 'Yes'.

  3. Especifique la dirección desde la que se van a obtener los mensajes estableciendo el URI de puerto.

  4. Puede especificar, de forma opcional, las siguientes dos propiedades:

    1. Especifique un intervalo de espera antes de obtener los mensajes mediante la propiedad MQSeries.WaitInterval en el mensaje.

    2. Especificar los criterios de coincidencia para los mensajes de recepción. Vea la ayuda "Opciones de coincidencia" para obtener más detalles.

  5. Cambie las siguientes variables en la orquestación para especificar de dónde obtener el mensaje:

    • Queue, queueManager y server. Se usan para compilar el URI en la forma expresión .
  6. Modifique la forma expresión para comentar las opciones de creación dinámica de colas y coincidencias según sea necesario.

  7. Puede generar e implementar el proyecto de las siguientes formas:

    • Abra la solución, haga clic con el botón derecho en el proyecto en el Explorador de soluciones y haga clic en Propiedades para ver las propiedades del proyecto. En la pestaña Firma, haga clic en <Nuevo...> en el cuadro desplegable Elegir un archivo de clave de nombre seguro . A continuación, proporcione un nombre de archivo de clave e impleméntelo.

    • Como método alternativo, ejecute el archivo setup.bat que crea el archivo de clave, genera el proyecto y lo implementa.

Para ejecutar el ejemplo

  1. Enlace la orquestación con el host de BizTalk.

  2. Habilite el puerto de recepción de archivos creado mediante la orquestación. Cambie la ubicación de recepción del archivo de c:\temp\in a la carpeta de archivos adecuada.

  3. Dé de alta e inicie los dos puertos de envío que se han creado. U puerto es un tipo de puerto de petición-respuesta, mientras que el otro es un puerto de envío de archivos y es la cola a la que se van a enviar los mensajes. Asegúrese de que se establece en la ubicación correcta.

  4. Para iniciar la orquestación, coloque un archivo en la carpeta de entrada. Esto invoca el adaptador MQSeries y llama al componente MQSAgent2 COM+ en el servidor especificado para obtener el mensaje. El mensaje recibido aparece en la ubicación de carpeta especificada en el puerto de envío de archivos.

  5. Si no se encuentra ningún mensaje que coincida con los criterios especificados en la forma Expresión , se quita un mensaje ficticio en la carpeta de salida. Para deshabilitar las opciones de coincidencia, convierta en comentario las dos últimas líneas de la forma Expresión .

Comentarios

  • Si la cola se está creando de forma dinámica, pero no se elimina, pueden producirse errores cuando se active la siguiente instancia de orquestación.

  • No hay otras formas de configurar dinámicamente el URI, este ejemplo especifica solo una opción. Por ejemplo, el URI puede establecerse mediante la lectura de algunas propiedades en el contexto del mensaje.

  • Si no hay mensajes en la cola que satisfagan las opciones de coincidencia, se devuelve un mensaje ficticio.

  • Ya que este ejemplo utiliza puertos de envío dinámicos, puede ser necesario especificar otras opciones, como el reintento y las transacciones. Utilice las propiedades de contexto que expone el adaptador para configurar estas opciones antes de enviar el mensaje al puerto de petición-respuesta dinámico.

  • Las colas mqSeries se pueden crear y eliminar dinámicamente mediante la interfaz MQSAdapterAdmin2 . Para obtener un ejemplo de cómo crear dinámicamente colas mqSeries, vea "Compatibilidad con la administración de colas" en https://go.microsoft.com/fwlink/?LinkId=89400.