Назад | Перейти на главную страницу

Как включить сохранение ActiveMQ?

Я хочу сохранить неиспользованные сообщения после перезапуска amq или машины. Актуален ли этот документ для выпуска ActiveMQ 5.12.1? Я пытаюсь использовать пример из документов и получаю ошибку:

ОШИБКА | Не удалось загрузить: ресурс пути к классу [activemq.xml], причина: строка 86 в документе XML из ресурса пути к классу [activemq.xml] недействительна; вложенное исключение - org.xml.sax.SAXParseException; lineNumber: 86; columnNumber: 90; cvc-complex-type.2.4.a: обнаружен недопустимый контент, начиная с элемента kahaPersistenceAdapter. Один из '{"http://activemq.apache.org/schema/core": jdbcPersistenceAdapter,"http://activemq.apache.org/schema/core": journalPersistenceAdapter,"http://activemq.apache.org/schema/core": kahaDB,"http://activemq.apache.org/schema/core": levelDB,"http://activemq.apache.org/schema/core": mKahaDB,"http://activemq.apache.org/schema/core": memoryPersistenceAdapter,"http://activemq.apache.org/schema/core": replicatedLevelDB, WC [## другое:"http://activemq.apache.org/schema/core"]}' ожидается.

Эта ошибка возникает с конфигурацией почти по умолчанию: https://yadi.sk/d/e8tWyIzyk9piV

Я заменяю kahaPersistenceAdapter на kahaDB и перезапускаю. И получите ошибку:

Атрибут maxDataFileLength не может присутствовать в элементе kahaDB.

Я заменяю этот атрибут и ActiveMQ запустился. Я отправляю сообщение в очередь, перезапускаю amq, и мое неиспользованное сообщение пропало. Что я делаю не так?

Ну, вы просто должны отправить специальный заголовок с сообщением.

$amq_headers['persistent'] = "true";

И ваше сообщение сохранилось.