2010-10-16 2 views
2

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

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

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

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-файл.

Приветствия, Max

+0

На данный момент я нашел обходной путь удалять папку каждый раз, когда я запускаю брокера/издателя. Было бы здорово, если бы кто-нибудь мог пролить свет на эту проблему. – Max

ответ

1

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

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

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

+0

Спасибо за ваш ответ. Изменение хранилища сохраняемости приведет к добавлению другой зависимости для того, что я не намерен использовать. – Max

+0

, так что в основном вы не хотите настойчивости и не используете конфигурацию кода. Я прочитал, что параметр будет проигнорирован при установке адаптера персистентности. Возможно, вы могли бы попробовать очистить адаптеры (если один из них был установлен по умолчанию, если вы посмотрите на источник, он использует MemoryPersistence) перед запуском? Другое, тогда, я бы сказал, что это ошибка, которую нужно зарегистрировать в jira: s – Noctris

+0

Как я уже сказал, я не хочу вводить другую зависимость (для MemoryPersistence). Думаю, мне просто нужно подождать, пока не появится 5.5. Проводки в отчете об ошибке указывают на то, что ошибка будет исправлена ​​в этой версии. – Max

0

при использовании Maven POM, а затем перейти к `

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

` также не забудьте очистить содержимое в KahaDB и Scheduler. также помогает отключить планировщик, если не нужен.

1

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

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

затем:

sudo service activemq restart 

и все обратно на работу