En este grupo En todos

Foro de J2EE



JMS punto a punto

daniel
Estado de México, Mé...
Escrito por Daniel Juarez Cruz
el 23/09/2011

Hola que tal, estoy trabajando con netbeans 6. 9 y glassfish 2, estoy trabajando en un sistema de peticiones con JMS, el cual quiero que entren peticiones como mensajes y del otro lado un manejador de estos que los consuma. La parte importante de esto es la forma que interactuan, ya que quiero implementarlo como cola y de tipo FIFO, esto es: la primera peticion que entre, sera la primera que salga. El objetivo de este sistema es evitar que se sature el servidor con las peticiones, ya que estas pueden ser muy grandes, ent lo que queremos es que solo haya un consumidor y se ejecute una peticion a la ves.

He hecho ejemplos, el mas basico ha sido el envio de mensajes numerados, usando Message-Driven Bean y un generador de mensajes. Monitoreandolos, los mensajes se envian correctamente (sen envia primero el mensaje 1, despues el mensaje 2, etc. ) el problema viene al consumirlos ya que no los consume en orden, de hecho no tiene ningun tipo de orden cuando se envian muchos mensajes (300).

Posteriormente realice otro ejemplo mas formal con las mismas condiciones, pero el consumidor ya no solo imprimia el mensaje consumido sino que hacia una llamada a un web service que regresa una cadena, este web service tarda dependiendo del numero que recibia, esto es: entre mas grande sea el numero, mas se tarda (un numero del 1 al 6). Al iniciar esta prueba, le mande 4 mensajes, de mayor a menor, el resultado tampoco fue el que buscaba ya que me regreso en orden contrario al deseado, esto es: me regreso primero el mas rapido y al ultimo el mas lento ( no lo hizo por FIFO). Esto me hizo darme cuenta que por cada mensaje crea una instancia del message-driven Bean y eso no es lo que quiero.

Quisiera ver si alguien me puede ayudar con esto, lo que quiero es que solo se haga una instancia y esa instancia atienda a todas las peticiones, esto es: el primer mensaje que entre sera el primero que se ejecute y hasta que acabe este, se ejecutara el siguiente.

Espero me haya explicado y ojala me puedan ayudar. De antemano muchas gracias.