2012-04-12 21 views
5

Soy nuevo en WebSphere MQ y estoy tratando de mover archivos a través de WebSphere MQ como mensajes usando el código C#. ¿Puede WebSphere MQ transferir archivos (por ejemplo, * .txt) directamente?¿Puede el archivo de transferencia de WebSphere MQ (por ejemplo, * .txt) directamente?

Gracias de antemano.

+0

El título de la publicación pregunta si WMQ puede transferir archivos, pero el cuerpo menciona WMQ File Transfer Edition. No está claro a qué se refiere. ¿Puedes aclarar? ¿Estás tratando de escribir código para poner archivos en mensajes? ¿O está intentando conducir transferencias FTE desde el código? –

+0

Lo siento por ser engañoso. No tengo WMQ File Transfer Edition, solo quiero escribir código para poner archivos en mensajes. Ahora uso FileStream para leer el contenido del archivo como una cadena, luego pongo la cadena en un mensaje. ¿De alguna manera mejor? ¡Gracias! –

Respuesta

3

No, la base de WebSphere MQ no transfiere directamente los archivos. La semántica para mover archivos incluye cosas tales como nombres de archivos, rutas de directorio, conversión de nombres en diferentes tipos de sistemas de archivos (es decir, un archivo de árbol UNIX contra un conjunto de datos particionado z/OS). Messaging usa semántica específica para colas y temas, y estos son drásticamente diferentes de los de los archivos.

En consecuencia, la base WMQ no intenta realizar la semántica de archivos como parte de su funcionalidad principal. El WebSphere MQ File Transfer Edition y IBM Sterling Connect:Direct proporcionan esa funcionalidad. En el caso de FTE, la transferencia de archivos gestionados se crea de forma nativa en la parte superior de WebSphere MQ.

Muchas personas han escrito anteriormente soluciones para mover archivos usando mensajería, ya sea WebSphere MQ u otro proveedor de transporte. Resulta que hacerlo de una manera robusta es una tarea no trivial. Éstos son algunos de los problemas:

  • Si hace que cada archivo sea un solo mensaje, los tamaños de los mensajes varían considerablemente. Es muy difícil sintonizar el motor de mensajería para que funcione simultáneamente con mensajes muy grandes y muy pequeños.
  • Si divide los archivos en fragmentos, puede ajustar el tamaño del fragmento para obtener un rendimiento de mensajería óptimo, pero ahora debe ocuparse de la conservación de la secuencia y reenviar los mensajes que faltan.
  • El problema general de agregar, reemplazar o cambiar el nombre de un archivo de destino con el mismo nombre.
  • El problema general de cómo hacer que el archivo esté disponible en el destino de forma transaccional. No quiere que el destinatario agarre la mitad de un archivo.
  • Integridad del archivo (FTE comprueba el archivo para asegurarse de que no se modifique en tránsito).

Estos son algunos ejemplos de los problemas para hacerlo de forma general. Sin embargo, si todo lo que necesita es una solución punto por punto de una sola vez, eche un vistazo a SupportPac MA01, el programa Q. Tomará archivos y colocará una línea a la vez en un mensaje o hará que el archivo completo sea un solo mensaje. También se puede usar como una tubería, por lo que es posible tener dos instancias de Q en las que uno canaliza mensajes a una cola y el otro los recupera.

+0

¡Muchas gracias!Usted mencionó el primer problema, "es muy difícil sintonizar el motor de mensajería para que funcione simultáneamente con mensajes muy grandes y muy pequeños", ¿qué significa? Bajará el rendimiento, ¿verdad? –

+0

¡Gracias por su respuesta! El rendimiento es importante para la aplicación y debe evitar detener el flujo de datos en el canal. Después de recibir los mensajes, debemos liberar el recurso relacionado, ¿no es así? En mi aplicación, invoco el qmgr.Disconnect() para liberar el recurso. ¿Es eso suficiente? ¿mejor manera? –

+0

Define "mejor manera". Un par de agentes de FTE costarán menos de lo que gastarán tratando de solucionar los problemas de su versión propia. Y si prevé la implementación en una gran red de nodos que necesitan mover archivos, la diferencia en rendimiento, confiabilidad y capacidad de administración pagará por los agentes. Sin embargo, si aún desea explorar opciones de diseño, haga una nueva pregunta. SO no funciona como un foro de discusión, sino que se basa en preguntas y votos discretos. Una nueva pregunta con sus propias etiquetas y respuestas ayudará mejor a la siguiente persona con un problema similar. –

3

WebSphere MQ File Transfer Edition (FTE) es un producto creado sobre WebSphere MQ para la transferencia de archivos. No se requiere codificación para transferir archivos. Hay comandos y MQ Explorer a través de los cuales puede configurar sus transferencias de archivos. También puede iniciar transferencias de archivos a través de scripts.

Lea este developerWorks article

+0

Lo siento por ser engañoso, pero no tengo FTE. Tal vez deba escribir el código para transferir el archivo. ¡También gracias! –

Cuestiones relacionadas