style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Dudas con JMS

Saludos, estoy creando dos librerías, una para enviar un objeto y en la otra recibes un dicho objeto para que sea insertado en una tabla, en el objeto paso un indicador para que sea interpretado como insert o update, el problema es que chocan los mensajes y me manda como repetido el registro, ya les puse prioridad a los mensajes pero parece ser que no los toma en cuenta. como puedo hacer que un mensaje pase primero que los demás????

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Sr. Negativo

Re: dudas con JMS

¿Cuál es el error que sale?

Imagen de JRichard

JMS Topic vs Queues

Hola. Segun :

http://stackoverflow.com/questions/5576415/jms-topic-vs-queues

A. Topic

In JMS a Topic implements publish and subscribe semantics. When you publish a message it goes to all the subscribers who are interested - so zero to many subscribers will receive a copy of the message. Only subscribers who had an active subscription at the time the broker receives the message will get a copy of the message.

B. Queue

A JMS Queue implements load balancer semantics. A single message will be received by exactly one consumer. If there are no consumers available at the time the message is sent it will be kept until a consumer is available that can process the message. If a consumer receives a message and does not acknowledge it before closing then the message will be redelivered to another consumer. A queue can have many consumers with messages load balanced across the available consumers.

#####################

Me parece que estas usando "topics" y varios "subscribers". Esto hace que cuando publiques un mensaje , mas de un receptor lo consuma e intente guardar el registro mas de una vez en la tabla. Quizas son ejecuciones previas de tu aplicacion, las cuales no has finalizado adecuadamente ( el proceso sigue ejecutandose ).

Deberias usar colas o Queues. Como dice arriba : A single message will be received by exactly one consumer. Tu emisor envia el objeto a una cola : queue.example.in
Luego desarrollas una clase "escuchando" esa cola : queue.example.in. Al detectar la llegada del nuevo mensaje, tu objeto, este sera "CONSUMIDO" eliminandose, logrando con esto que ningun otro podra consumirlo.

Te dejo un ejemplito que envia y consume un string. Lo podras cambiar facilmente para poder enviar un objeto :

http://www.javablogging.com/simple-guide-to-java-message-service-jms-usi...

Saludos,
www.youtube.com/user/ZERL1NG‎

Gracias

Gracias por tu respuesta, pero si estoy usando queues, mi producer extrae registros de por hora, digamos 100 y manda el mensaje, el consumer le entran aprox 20 mensajes y los quiere hacer al mismo tiempo, es por esto que que hace el search del registro y como no lo encuentra manda insert, pero ahí es donde truena, manda mensaje duplicado.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">