Постоянство сообщений JMS в ActiveMQ - PullRequest
0 голосов
/ 28 июня 2018

Мне нужно обеспечить повторную доставку сообщений 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);
    }
}
...