J'envoie des messages à une file d'attente JMS. Quels sont les moyens possibles de rechercher un message particulier dans une file d'attente à consommer?Comment rechercher un message particulier dans la file d'attente JMS
J'ai essayé de la façon suivante: Je suis en train de l'JMSCorrelationID
tout en envoyant un message à la file d'attente:
public void createDQueue(String queuename, String json, Integer userid) {
try {
QueueSession.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue(queuename);
ObjectMessage objectMessage = session.createObjectMessage();
objectMessage.setJMSCorrelationID(String.valueOf(userid));
objectMessage.setObject(json);
session.createSender(queue).send(objectMessage);
session.close();
connection.close();
}catch(Exception e){
e.printStackTrace();
}
}
Dans le code de la consommation, je veux transmettre ce message particulier sur la base JMSCorrelationID
. Je ne suis pas en mesure d'obtenir ce message particulier. Pouvez-vous proposer une solution?
public void getSpecificMessage(String queuename, Integer userid) {
try {
QueueConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
((ActiveMQConnectionFactory) connectionFactory).setUseAsyncSend(true);
QueueConnection connection = connectionFactory.createQueueConnection();
connection.start();
QueueSession session = connection.createQueueSession(false,
QueueSession.AUTO_ACKNOWLEDGE);
String id = String.valueOf(userid);
Queue queue = session.createQueue(queuename);
QueueReceiver receiver = session.createReceiver(queue, "JMSCorrelationID="+id);
Message message = receiver.receive();
} catch (JMSException e) {
e.printStackTrace();
}
}
Je pense que vous avez fait une erreur lors de la publication de votre code ... Le premier bloc de code n'est pas correct. Vous pouvez cliquer sur le lien 'edit' sous votre question pour corriger cela dans votre question. –