This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

Enlaces Recomendados

BTS 2006: Como suscribirse a mensajes suspendidos

Aprovechando que en el CIIN hemos estado trabajando en un pequeño piloto demostrativo de las capacidades de Biztalk Server 2006 (BTS 2006), voy a comentar algunas de las cosas interesantes que hemos probado en el mismo y que dan una pequeña idea de las enormes capacidades de este producto a nivel de facilitar la gestión de las soluciones de negocio desplegadas. En particular, me centraré en cómo es posible capturar mensajes suspendidos desde un puerto de envío de BTS 2006.

Los mensajes suspendidos en BizTalk son aquellos que se generan cuando por alguna razón se ha producido un fallo en un adaptador, un puerto de recepción, un mapa de BizTalk o una orquestación. Estos mensajes suspendidos se almacenan en la base de datos de mensajería de BizTalk, MessageBox, y los podemos visualizar a través de la BizTalk Administration Console. Para ello pinchamos en BizTalk Group [NombreServidor:BizTakkMngDB] (que nos permite acceder a toda la información relativa a la gestión a las soluciones de negocio desplegadas en el servidor: aplicaciones de BizTalk, mensajes suspendidos, procesos en ejecución, etc.) y luego en la sección Suspended Items podremos ver los mensajes que se encuentran en la MessageBox en estado suspendido.

Como vemos, los elementos suspendidos se agrupan en dos categorías: elementos suspendidos debido a que se ha producido un fallo en un puerto de recepción / envío, en una orquestación o en un mapa de BizTalk, y elementos suspendidos debido a que se ha producido fallos en el adaptador MSMQT. Nosotros nos vamos a centrar en los mensajes suspendidos que se generan cuando falla una instancia de servicio no MSMQT. Como vemos, cuando se produce un fallo en una instancia puede suceder que se quede en estado Resumable o en estado No-resumable, es decir, la instancia que ha producido el error se recupera o no. En cualquiera de los dos estados, se generarán mensajes suspendidos  en la MessageBox. Estos mensajes suspendidos los podemos visualizar desde la pantalla anterior. Así, si pinchamos en la opción Resumable, accederemos al listado de instancias que han fallado y han generado mensajes suspendidos.

Si vemos el detalle de una de las instancias suspendidas, podremos acceder a los detalles del servicio suspendido, información sobre el error (en nuestro caso, aparecerá algo del estilo Suspending message: 227ea975-da93-48e3-9fe0-a45a880a85c1), y detalles del mensaje suspendido que se ha generado.

Suscribiendo a mensajes suspendidos

Como hemos visto, al producirse un fallo en una cierta instancia se generan mensajes suspendidos que se quedan en la MessageBox, pero para ser conscientes de ello tenemos que ir a la consola de administración de BizTalk y refrescar cada cierto tiempo la información de gestión para visualizar si se ha producido un error, así como el mensaje suspendido generado. Para automatizar esta labor, BTS 2006 permite que nos suscribamos a los mensajes suspendidos de la MessageBox en un puerto físico de envío o en una orquestación para hacer el tratamiento de error correspondiente. El hecho de poder suscribirnos a los mensajes suspendidos, nos permitirá volcar esos ficheros  bien en una carpeta local o remota (FTP), en WSS, como attachment en un correo electrónico, etc. Para generar estos mensajes suspendidos, forzaremos un fallo en una de las partes del piloto de BizTalk que hemos desarrollado en el CIIN. Este piloto, entre otras funcionalidades, permite generar ficheros EDI a partir de un fichero de datos no EDI (un fichero XML en este caso).  La generación del fichero EDI es realizada por el adaptador EDI de BTS 2006, por lo que provocaremos el fallo en el formato de los datos origen (en este caso, la cadena de datos origen tiene una longitud superior a la esperada por el adaptador EDI).

Para suscribirnos al mensaje suspendido, tenemos que crear  un puerto de envío y configurarlo adecuadamente para que capture estos mensajes. En este caso, vamos a crear un puerto de envío que envíe el mensaje suspendido por e-mail. Para ello, en la administración central de BizTalk nos vamos a la sección Send Ports de la aplicación en la que queremos capturar los mensajes suspendidos. Hacemos click con el botón derecho y seleccionamos la opción New -> Static One-way Send Port. De este modo se nos abrirá el wizard para la creación y configuración de puertos físicos de envío en BTS 2006.

En la pantalla de configuración especificamos el nombre del puerto de envío, el tipo de transporte que será SMTP, y la pipeline de envío a utilizar (utilizamos en este caso la pipeline que da por defecto BizTalk: PassThruTransmit, que recoge sin tratar un mensaje de una cierta ubicación, la MessageBox en este ejemplo, y lo envía al destino, la buzón de correo electrónico con la que configuraremos el puerto de envío).

El siguiente paso es configurar el transporte SMTP de manera adecuada. Para ello pulsamos el botón Configure de la pantalla anterior y configuramos las propiedades siguientes:

·         Pestaña General: dirección de e-mail del remitente.

·         Pestaña Attachments: especificamos la opción Attach all parts para que en el e-mail se envíe el mensaje suspendido.

·         Pestaña Handler Override: aquí especificaremos el servidor de correo saliente y el remitente.

Hasta aquí hemos configurado como se va a realizar el envío del mensaje suspendido, pero en ningún sitio hemos indicado como se realiza la suscripción a un mensaje suspendido debido a que se haya producido un error en alguna parte de nuestra aplicación. La suscripción se indica desde la opción Filters dentro de las propiedades del puerto de envío. Esta opción nos permite definir en el puerto de envío filtros para determinar que mensajes son encaminados desde la MessageBox a nuestro puerto. En este caso nos interesa encaminar los mensajes que se han generado como consecuencia de que no se ha podido generar un archivo EDI, por lo que aplicamos el filtro: ErrorReport.SendPortName==NombrePuertoEnvioEDI.

De esta forma, estamos especificando que queremos aquellos mensajes suspendidos producidos como consecuencia de que el puerto de envío encargado de entregar los mensajes EDI no ha podido realizar tal entrega debido a que se ha producido un error en la generación del archivo EDI por parte del adaptador de EDI de BTS 2006. Sin más, habilitamos el puerto y lo iniciamos para que se quede a la espera de los mensajes suspendidos de acuerdo al filtro aplicado.

Probando la suscripción

Para probar que todo funciona según lo esperado,  basta con alimentar la solución de generación de archivos EDI con un archivo XML que presenta errores en los formatos de los datos. Como consecuencia de estos errores, el adaptador de EDI no podrá generar el archivo correspondiente y el puerto de envío no podrá entregarlo, por lo que se generará un mensaje suspendido en la MessageBox que nos debería llegar a nuestro buzón de correo.

Bueno, pues hasta aquí el tema de suscripción a mensajes suspendidos en la MessageBox. Espero que el post os haya resultado interesante.

 

Published 11/1/2007 17:02 por Juan Carlos González Martín

Archivado en:
Comparte este post:

Comentarios

# BTS 2006: Integración con SQL Server (I)@ Thursday, January 18, 2007 6:48 PM

Como os comentaba en un post previo de BizTalk Server 2006 (BTS 2006), recientemente en el CIIN hemos

Blog del CIIN

# BTS 2006: Integración con SQL Server (II)@ Thursday, January 25, 2007 9:01 AM

En el post previo de BizTalk Server 2006 (BTS 2006) os comentaba las capacidades de integración de BTS

Blog del CIIN

# BizTalk Server 2006 R2: Novedades!@ Thursday, March 15, 2007 5:26 PM

Ayer asistí a un WebCast de Microsoft TechNet en el que Tomás Hernández nos contaba algunas de las novedades

Blog del CIIN