2016-12-28 17 views
0

В окнах, когда я использую команды rabbitmq-serverstart/stop, данные по просроченным очередям RabbitMQ удаляются. Кажется, очереди возникают при создании сервера RabbitMQ.rabbitmq-server начинает потерять данные по прочным очередям

Если я использую rabbitmqctlstop_app/start_app, я не теряю данные. Зачем?

Что произойдет, если мой сервер снизится и как я могу быть уверен, что я не потеряю данные, если это произойдет?

ответ

0

проблема с конфигурацией: я начинал rabbitmq из каталога rabbitmq sbin. Я снова установил кролик и добавил rabbitmq к услугам Windows. Теперь на моем компьютере была решена проблема с потерями данных. Когда я запускаю/останавливаю службу Windows, rabbitmq не теряет никаких данных.

0

Создание очередей долговечны недостаточно Возможно, вам необходимо также объявить обмен как долговечный, а также отправить «стойкие» сообщения

В Java вы будете использовать:

channel.basicPublish("", "sample_queue", 
     MessageProperties.PERSISTENT_TEXT_PLAIN, // note that this parameter is not null! 
     message.getBytes()) 

Надежда это help

+0

Я также сохраняю сообщения. когда я использую rabbitmqctl start/stop, я не теряю никаких «постоянных сообщений». При публикации сообщений я использую deliveryMode = 2. – melihcoskun

+0

Я знаю, что start_app/stop_app будет только перезапускать mq-кролик. Все постоянные вещи хранятся в базе данных, называемой mnesia. Его просто работает на вершине erlang vm, как кролик. В linux вы можете ввести ps -ef | grep rabbit, и вы увидите, что есть много процессов. Таким образом, остановка rabbitmq-server остановит все, включая mnesia. Это разница между двумя командами. –

+0

спасибо. Остановить Mnesia не должно быть проблемой. Потому что я снова запускаю rabbitmq. Mnesia - это db, и базы данных не могут потерять какие-либо данные при их перезапуске. Я не использую кластеризацию только одного экземпляра rabbitmq, поэтому я предполагаю, что один одиночный кластер mnesia single rabbitmq работает над моей системой. – melihcoskun