Вопрос

Я хотел бы создать протокол связи на основе издателя-абонента между сообщениями о создании сервера и многими клиентами, получающими их. После немного исследований я решил пойти с ActiveMQ. Я посмотрел на несколько учебных пособий и сайта ActiveMQ и настроил брокер следующим образом:

BrokerService broker = new BrokerService();
broker.setPersistent(false);
broker.addConnector("tcp://localhost:61616");
broker.start();

Мне нужна только функциональность передачи сообщения, отсутствие постоянства базы данных или что-либо одинаково. Однако, когда я запускаю приложение, папка ActiveMQ-данных создается независимо от конфигурации. Это, в свою очередь, вызывает исключение в следующий раз, когда я начну брокер.

SEVERE: Failed to start ActiveMQ JMS Message Broker. Reason: java.io.EOFException: Chunk stream does not exist at page: 0

Это ошибка или я не устанавливаю брокер правильно (используя ActiveMQ 5.4.1)? Как я могу отключить постоянство, поэтому дополнительные хранилище данных не создано? Кроме того, я предпочитаю настроить брокеров из приложения Java, а не через файл XML.

Ура, макс

Это было полезно?

Решение

Это не нормальное поведение, а ошибка в KAHADB (хранилище настойчивости по умолчанию в ActiveMQ)

Вы можете увидеть информацию о Bug 2935 ActiveMQ.

Вы могли бы решить это, выбрав другой механизм настойчивых, хотя я странно имел эту проблему пару раз, а затем отдален

Другие советы

В моем случае удаление всех файлов данных KAHADB из следующего каталога помогает:

$ ls /var/lib/activemq/main/data$ cd kahadb
db-1.log  db.data  db.redo  lock

тогда:

sudo service activemq restart

и все вернуться к работе

При использовании Maven Pom, затем переключитесь на `

<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-all</artifactId>
    <version>5.8.0</version>
</dependency>

«Также не забудьте очистить содержимое в KAHADB и планировщике. Это также помогает выключить планировщик, если не нужно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top