¿Podemos esperar a que el motor de aplicación de PeopleSoft espere a que completen los mensajes asíncronos?

StackOverflow https://stackoverflow.com//questions/22022400

Pregunta

Estoy tratando de procesar una carga de datos donde estoy tratando de publicar los mensajes a través de PeopleSoft sobre Integration Broker de forma asíncrona en un motor de aplicación. El punto completo es poder enviar varios mensajes y consumirlos en el mismo nodo. Antes de enviar los mensajes, estoy almacenando los datos en una tabla (digamos T1) para almacenar todos los valores de campo en el archivo de carga.

Mientras consume, estoy tratando de exponer cada mensaje a la interfaz componente y las excepciones se registran en la misma tabla T1. Digamos por cada transacción, estamos marcando el campo de la mesa (digamos procesados_flag= 'y').

Necesito un mecanismo donde podría esperar todos los mensajes asíncronos para completar. Estoy pensando en revisar la tabla T1, si hay filas en la tabla T1, donde Procesed_Flag es 'n', solo haz que el hilo sueño durante más tiempo. Si bien todos los mensajes no se procesan, mantenganlo durmiendo y no permita que se complete el motor de la aplicación.

El único beneficio que puedo obtener es que no tengo que esperar a las múltiples instancias a la vez o no tiene que hacer la llamada síncrona. Toda la idea es usar el componente por diferentes transacciones (como si fuera usado por decir 100 personas -> 100 transacciones).

A menos que se completen las 100 transacciones, nos aseguraremos de que la tabla T1 mantiene un registro de lo que pasa y apaga. Si algo está mal, puede registrar las excepciones atrapadas por el CI.

Se apreciaría cualquier comentario sobre este enfoque. ¡Gracias de antemano!

¿Fue útil?

Solución

Estamos tomando un enfoque diferente. Incluso si somos capaces de validar los datos en esas tablas antes de que se complete el motor de la aplicación, toda la idea de enviar los mensajes de forma asíncrona no es de uso. En ese caso, el uso de mensajes síncronos sería mejor y ejecutará los procesos en paralelo.

Entonces, decidimos permitirle completar el motor de la aplicación y publicar todos los trozos de datos a través de mensajes y asegurarse de que los mensajes se consuman completamente en el mismo nodo.

  1. Actualizaremos la tabla T1, para todas las filas procesadas / exitosas / fallas, ya que seguimos consumiendo los mensajes y los usamos según sea necesario.

  2. Mantendremos una auditoría o contador para todas las filas publicadas y consumidas. Ya que exponer el mismo componente a múltiples transacciones sería un gran impacto de rendimiento. Queremos asegurarse de que se desempeña mejor, como si decida 50 usuarios actualizan las mismas tablas detrás del componente usando el mismo CI (por supuesto, diferentes instancias). Estaré completando mi prueba de concepto y espero que sea mucho mejor que ejecutar los procesos en paralelo.

  3. Espero que esto pueda ayudar a cualquiera que esté tratando con estos problemas de carga. ¡Gracias!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top