Я настраиваю простого встроенного брокера ActiveMQ. Работает нормально, пока не попробую настроить адаптер персистентности. Я просто копирую конфигурацию из http://activemq.apache.org/persistence.html#Persistence-ConfiguringKahaPersistence. Когда я добавляю эту конфигурацию в мою конфигурацию Spring, вот так:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:amq="http://activemq.apache.org/schema/core" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core-5.3.0.xsd"> <amq:broker useJmx="true" persistent="true" brokerName="localhost"> <amq:transportConnectors> <amq:transportConnector name="vm" uri="vm://localhost"/> </amq:transportConnectors> <amq:persistenceAdapter> <amq:kahaPersistenceAdapter directory="activemq-data" maxDataFileLength="33554432"/> </amq:persistenceAdapter> </amq:broker> </beans>
Я получаю ошибку:
cvc-complex-type.2.4.a: Invalid content was found starting with element 'amq:persistenceAdapter'. One of '{WC[##other:"http://activemq.apache.org/schema/core"]}' is expected.
Когда я вынимаю элемент amq: persistenceAdapter, он работает нормально. Такая же ошибка происходит независимо от того, какой адаптер персистентности я включаю в тело, например, JDBC, журнал и т. д.
Любая помощь будет принята с благодарностью.
Спасибо.
Не могу вспомнить, почему в данный момент, но произошло непреднамеренное изменение, которое требовало, чтобы элементы были в алфавитном порядке. Попробуйте поместить адаптер постоянства перед транспортными соединителями.
Брюс
Относительно алфавитного порядка в Справочнике по Apache ActiveMQ XML упоминается:
Начиная с ActiveMQ 5.4, элементы XML внутри элемента должны располагаться в алфавитном порядке. Если вы посмотрите на XSD, это всегда имело место с ActiveMQ. Разница в 5.4 заключается в том, что конфигурация XML фактически проверяется на соответствие схеме XML.
Вы должны следовать порядку схемы до v5.4.