WMB: Modo de transacción y comportamiento de las colas de salida MQ (Transaction mode) 16


Sabemos que en WMB los mensajes se dejan una cola una vez acabada la transacción, que normalmente es cuando se finaliza el flujo. Es decir, si tenemos un escenario en el que tenemos una cola MQ de salida (MQOutput) como último nodo, la transacción finaliza dejando el mensaje en la cola. Por lo que si queremos leer el mensaje, una vez que hemos visto por debug que efectivamente se ha puesto en la cola, no tendríamos problemas.

Sin embargo, si imaginamos otro escenario donde esa cola de salida no es el último nodo, sino que tenemos un FlowOrder, en el que en la primera parte se deja un mensaje en la cola, y en la segunda parte se hacen más cosas (irrelevante); aunque hayamos visto que el mensaje se deja en la cola, la transacción no ha finalizado, por lo que la sincronización para dejar el mensaje en dicha cola, aún no se ha hecho. Si tratamos de leer esa cola para recuperar el mensaje, lo normal es que obtengamos un error típico de MQ en esta situación diciendo que los mensajes han expirado. Esto es porque la cola aún está abierta. Por tanto, hasta que no se ha terminado la segunda parte del FlowOrder, el mensaje no estará realmente en la cola.

Si quisiéramos en esta situación anterior, que el mensaje quede en la cola una vez pasemos por ella en la primera parte del FlowOrder, podemos usar la opción de «Transaction mode» para la cola de salida y ponerla a «Yes». La cual hará que ahí acabe la transacción, aunque el flujo siga después, haciendo la sincronización y escribiendo el mensaje en la cola de salida.


16 Comentarios en “WMB: Modo de transacción y comportamiento de las colas de salida MQ (Transaction mode)

Comentarios están cerrados.