Я отправляю сообщения в очередь JMS. Каковы возможные способы поиска конкретного сообщения в очереди для потребления?Как найти конкретное сообщение в очереди JMS
Я пробовал следующим образом: я устанавливаю JMSCorrelationID
при отправке сообщения в очередь:
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();
}
}
В потребительском коде я хочу получить, что конкретное сообщение на основе JMSCorrelationID
. Я не могу получить это сообщение. Можете ли вы предложить решение?
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();
}
}
Я думаю, что вы допустили ошибку при отправке кода ... Первый блок кода неверен. Вы можете нажать ссылку «изменить» под своим вопросом, чтобы исправить это в своем вопросе. –