Как я могу получить MessageId после отправки сообщения, но без использования сообщения?
У меня есть этот метод, который отправляет сообщение в очередь
public void sentMessage(JmsTemplate jmsTemplate, String queueName, String message, String uuid) {
jmsTemplate.convertAndSend(queueName, message,
new MessagePostProcessor() {
@Override
public Message postProcessMessage(Message message) throws JMSException {
message.setStringProperty("uuid", uuid);
log.info("CorId:{}", message.getJMSCorrelationID());
return message;
}
});
}
но мне нужно было узнать идентификатор после отправки сообщения, но без использования сообщения, и я написал этот метод:
public ApplicationRunner sentMessage(JmsTemplate jmsTemplate, String queueName, String message, String uuid) {
return args -> {
final AtomicReference<Message> msg = new AtomicReference<>();
jmsTemplate.convertAndSend(queueName, message, m -> {
msg.set(m);
return m;
});
String message1 = msg.get().getJMSCorrelationID();
log.info("CorId:{}", message1);
};
}
как переписать метод, чтобы вы могли вызвать его в другом классе и получить messageId?
Я пишу это
public String sentMessage(JmsTemplate jmsTemplate, String queueName, String message, String uuid) throws JMSException {
return t -> {
final AtomicReference<Message> msg = new AtomicReference<>();
jmsTemplate.convertAndSend(queueName, message, m -> {
msg.set(m);
return m;
});
return msg.get().getJMSCorrelationID();
};
}
но получите ошибку: целевой тип лямбда-преобразования должен быть интерфейсом