2011-06-03 8 views

Respuesta

16

Puede establecer una propiedad de mensaje usando Message.setObjectProperty(String, Object) y luego tienen sus consumidores a seleccionar los mensajes que están interesados ​​en utilizar ejemplo Session.createConsumer(Destination, String)

remitente:

Message message = session.createMessage(); 
message.setObjectProperty("OS", "LINUX"); 
producer.send(message); 

ejemplo del receptor:

MessageConsumer consumer = session.createConsumer(destination, "OS = 'LINUX'"); 
//Use consumer to receive messages. 

El receptor en el ejemplo ignorará (irán a otro receptor) todos los mensajes que no coincidan con el selector. En este caso, este consumidor ignorará todo mensaje en el que la propiedad 'OS' no es 'LINUX'.

+0

¿Cómo lo anterior resuelve el problema? Estoy enfrentando el problema después de cambiar lo anterior? – Kathir

+1

Aunque esto en realidad no resuelve el problema, es una muy buena idea de la creación de los consumidores de JMS. ¡Gracias por compartir! –

3

Puede establecer las propiedades del mensaje JMS: http://download.oracle.com/javaee/1.4/api/javax/jms/TextMessage.html y filtrar los mensajes en el lado del cliente. Por ejemplo, message.setStringProperty ("TARGET_OS", "Linux") - en el emisor http://www.mkyong.com/java/how-to-detect-os-in-java-systemgetpropertyosname/ - detectar la SG a los receptores y los mensajes de filtro con la propiedad correcta TARGET_OS

+0

Gracias por su respuesta, ¿puede dar más detalles sobre esto ?, ahora puedo enviar un mensaje correctamente, pero ¿cómo lo recibo? ¿O dónde tengo que establecer la propiedad para el lado del receptor? – SmartSolution

+0

Puede verificar la propiedad en el lado del receptor e ignorar los mensajes si el receptor no está interesado. O puede usar el selector JMS: http://download.oracle.com/javaee/1.4/tutorial/doc/JMS4.html si su implementación JMS lo admite. – dbf

0

No estoy seguro si me falta algo, usted podría guardar cosas simple al tener múltiples colas, específicas para cada plataforma, los consumidores basados ​​en Linux pueden escuchar solo la cola específica de Linux. Ahora su reto probablemente será enrutar los mensajes a la cola apropiada desde el lado del productor, ¿eso debería ser bastante fácil si el enrutamiento se basa en algún atributo del mensaje?

+0

Gracias por responder, pero en realidad no se supone que cree una nueva cola para esto según el requisito. – SmartSolution

1

Puede usar los selectores de JMS en el lado del consumidor para buscar mensajes que se ajusten a criterios específicos.

Cuestiones relacionadas