ftp msmq message-queue nservicebus file-transfer

ftp - Envío de archivos a través de MSMQ



message-queue nservicebus (4)

NServiceBus proporciona una buena abstracción sobre MSMQ para situaciones como esta. Obtiene los aspectos de mensajería confiable de MSMQ, junto con un modelo de programación muy agradable para definir sus mensajes.

MSMQ está limitado a un tamaño de mensaje de 4MB, sin embargo, y hay dos maneras en que puede manejar esto en NServiceBus:

  1. NServiceBus tiene un concepto llamado Data Bus, que toma los archivos adjuntos grandes en sus mensajes y los transmite de manera confiable utilizando otro método. Esto es manejado por la infraestructura y, en lo que respecta a los manejadores de mensajes, los datos están ahí.
  2. Podrías dividir la carga útil en mensajes atómicos más pequeños y enviarlos como mensajes normales. La infraestructura de NServiceBus aseguraría que todos lleguen a su destino y se procesen. Recomendaría este método a menos que sea absolutamente crítico que todo el enorme volcado de datos se procese como una transacción atómica.

Otra cosa a tener en cuenta es que el hecho de que realice tiradas nocturnas es probablemente una limitación de un sistema anterior. Con NServiceBus, es posible cambiar el sistema para que estos bits de información se envíen de manera más inmediata, lo que dará lugar a datos mucho más actualizados todo el tiempo, lo que puede ser una gran ganancia para la empresa.

En un escenario minorista donde cada tienda informa su transacción diaria al sistema de back-end al final del día. Hoy, un archivo que consta de las transacciones diarias y otra metainformación se transfiere de las tiendas al backend mediante FTP. Actualmente estoy investigando la sustitución de FTP con otra cosa. MSMQ ha sido sugerido como un mecanismo de transporte alternativo. Entonces mi pregunta es, ¿necesitamos escribir un servicio de Windows personalizado que pegue el archivo de transacciones diarias en un objeto de mensaje y lo envíe en su camino o hay algún mecanismo de MSMQ para manejar esto?

Además, dado que los archivos que queremos transferir pueden alcanzar 5-6 Mb para grandes tiendas, ¿deberíamos descartar MSMQ? En ese caso, ¿hay alguna otra tecnología sugerida que deberíamos investigar?

¡Aclamaciones!


Puede consultar los productos IBM Sterling Managed File Transfer y WebSphere MQ Managed File Transfer.

Puede considerar WebSphere MQ MFT si necesita capacidades de mensajería y transferencia de archivos. Por otro lado, si su requisito es solo la transferencia de archivos, entonces puede consultar Sterling MFT.


Enviar archivos a través de un transporte de mensajes no es trivial. Si coloca el archivo completo en un solo mensaje, puede tener la atomicidad que necesita, pero ajustar el proveedor de mensajería para obtener una amplia variación en el tamaño de los mensajes puede ser un desafío. Si todos los archivos son aproximadamente del mismo tamaño, uno por mensaje es sobre la solución más simple.

Por otro lado, puede dividir los archivos en varios mensajes, pero luego debe volverlos a ensamblar, en el orden correcto, incluir un protocolo para detectar y reenviar segmentos faltantes, verificar la integridad del archivo recibido en comparación con el archivo enviado, etc. También es probable que desee comprobar que los archivos en cualquiera de los extremos no cambiaron durante la transmisión.

Con cualquiera de estos sistemas también necesita que el sistema sea lo suficientemente inteligente como para administrar la disposición de enviar y recibir archivos en condiciones normales y de excepción, registrar las transferencias, etc.

Por lo tanto, al considerar si pasar a la mensajería, las dos mejores opciones son moverse de forma nativa a la mensajería y renunciar a los archivos por completo, o usar una solución de transferencia de archivos administrada por la empresa que se ejecute sobre el proveedor de mensajería que elija. A largo plazo, ninguno de los productos de MFT disponibles en el mercado costará tanto como desarrollarlo usted mismo si desea hacerlo bien con un sólido manejo de excepciones y generación de informes.


Si las tiendas están en redes separadas y se comunican a través de Internet, entonces MSMQ no es realmente una opción. NServiceBus proporciona un concepto de una puerta de enlace , que permite transportar de forma asíncrona mensajes MSMQ a través de HTTP o HTTPS.