Мне нужно обеспечить повторную доставку сообщений JMS при сбое потребителя
Способ настройки производителя сейчас - DefaultJmsListenerContainerFactory и Session.AUTO_ACKNOWLEDGE
Я пытаюсь создать банку и попытаться сохранить сообщение на сервере, как только приложение сможет его использовать, производитель в банке выдаст сообщение приложению.
Это хороший подход для этого ?! Любой другой способ / рекомендация, чтобы улучшить это?
public void handleMessagePersistence(final Object bean) {
ObjectMapper mapper = new ObjectMapper();
final String beanJson = mapper.writeValueAsString(bean); // I might need to convert to xml instead
// parameterize location of persistence folder
writeToDriver(beanJson);
try {
Producer.produceMessage(beanJson, beanJson, null, null, null);
} catch (final Exception e) {
LOG.error("Error producing message ");
}
}
вот что я должен записать в сообщении:
private void writeToDriver(String beanJson) {
File filename = new File(JMS_LOCATION +
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")) + ".xml");
try (final FileWriter fileOut = new FileWriter(filename)) {
try (final BufferedWriter out = new BufferedWriter(fileOut)) {
out.write(beanJson);
out.flush();
}
} catch (Exception e) {
LOG.error("Unable to write out : " + beanJson, e);
}
}