Я хочу использовать ActiveMQ в приложении Spring Boot как встроенный сервер. Для настройки ActiveMQ я использовал следующий учебник: Spring Boot. Messaging with JMS. Мое приложение будет брокером и потребителем. Есть несколько потоков создания сообщений, как это:ActiveMQ с весной Boot. Настойчивость сообщений не работает
@Autowired
private JmsTemplate jmsTemplate;
.......
MessageCreator messageCreator = session -> session.createObjectMessage(transactionNotificationData);
jmsTemplate.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
jmsTemplate.send(QUEUE, messageCreator);
У меня есть еще один класс с следующим методом:
@JmsListener(destination = QUEUE)
public void receive(Message message) throws IOException {
brokerService.getPersistenceAdapter();
try {
if (message instanceof ObjectMessage) {
ObjectMessage objMessage = (ObjectMessage) message;
NotificationData notification = (NotificationData) objMessage.getObject();
LOG.info("Received <" + notification.notification + ">");
...... do some stuff ........
// message.acknowledge();
}
} catch (JMSException e) {
e.printStackTrace();
}
Во время тестов я могу увидеть сообщения производятся и потребляются. Как видите, message.acknowledge()
прокомментирован. Поэтому я ожидаю, что сообщение будет повторно отправлено после повторного запуска моего приложения. Однако этого не происходит.
@ Loco сделал это ответ на ваш вопрос? – Vihar