Я хочу сохранить неиспользованные сообщения после перезапуска 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";
И ваше сообщение сохранилось.