jueves, 26 de mayo de 2011

Colas AQ (I):- Concepto

Recientemente me he tenido que enfrentar a ese ‘Gran Desconocido’ que es para muchos ‘Las Colas AQ’.  En Oracle es algo poco utilizado, por eso no se suele encontrar fácilmente información de ello (Y menos en nuestro idioma). Afortunadamente en ORA-600 existe un extenso artículo relacionado con las Colas AQ, dividido en varias secciones de donde he obtenido gran parte de la información que me he propuesto incluir entre mis publicaciones, por si en un futuro, lo vuelvo a necesitar.

El propósito de las Colas AQ, viene a ser el paso de información entre procesos. Este paso de información se puede hacer en la misma BBDD o entre distintas BBDD. La información que se transmite suele ser los registros del contenido de tipo tabla.  Este tipo de información puede ser tan complejo como se precise.

Las Colas AQ permiten que existan varios procesos creando información al mismo tiempo,  y consecuentemente, puede haber también varios procesos contabilizando las colas, para asegurarse que cada elemento contenido en las colas va a tratarse una vez – y sólo una – y que estas se van a procesar en orden FIFO (First In First Out).

Un ejemplo de uso de las colas AQ – el ejemplo al que me he tenido que enfrentar en estos días – puede ser la tramitación de las Altas de un usuario sobre una aplicación. Tenemos dos aplicaciones (A y B),  situados en entornos distintos (distintas BBDD, distintas máquinas, e incluso distintos S.O. ), Si tenemos un entorno origen de la cola AQ en la BBDD de la Aplicación A y un destino de la Cola AQ en la aplicación B, puede darse el caso de que en la Aplicación A se dé de alta un usuario que consecuentemente tiene que ser dado de alta en la Aplicación B. Pero la Aplicación B tiene su propio proceso para gestionar las Altas aunque los datos que utiliza y necesita para gestionar las altas son exactamente los mismos que para la Aplicación A, con lo que esos datos se almacenan en una Cola AQ, que se propaga – de un modo Transparente – entre Entornos. 

No siempre las Altas de la Aplicación A tienen que gestionarse en la Aplicación B, pero si todos los registros que se almacenan en la Cola AQ tienen que ser propagados (tratados y procesados) para que sean gestionados por la Aplicación B. Si la propagación no se efectúa correctamente, tenemos un problema que es al  que nos hemos tenido que enfrentar en estos días.  Más adelante intentaré exponer algunos ejemplos de algunos ‘posibles’ problemas y cómo solucionarlos. 



TIPOS DE COLAS Y COMPONENTES.

La Colas AQ pueden ser :

-          Single Consumer :- Tienen un solo destinatario
-          Multiple Consumer:- Tienen Varios destinatarios

En las colas Single Consumer se necesita, al menos de los siguientes componentes:

-          La Creación de un Tipo de Datos (Que es la información que se va a propagar)
-          La Creación Tabla de la Cola (Queue Table) y la configuración de la Cola
-    Los procesos que van a ser utilizados por las aplicaciones para transmitir y recibir la información entre las colas, es decir, para Encolar y Desencolar las colas.

Si las colas están en Remoto y/o son de tipo Multiple Consumer sería necesario, además, configurar los Suscriptores, que vienen a ser el destino (en remoto o los múltiples destinos) y la Propagación de los datos de las Colas AQ. 

Un Saludo,
Cyris.

No hay comentarios: