Я подключаюсь к кластеру узлов кролика (A, B) с использованием пружины-amqp. Также предположим, что есть два приемника сообщений (Receiver_1 и Receiver_2), которые использовали соединения с узлом A.Rabbitmq кластер с пружиной не сработает после восстановления после отказа
Когда A опускается, приемники Receiver_1 и Receiver_2 автоматически переключают свои соединения для подключения к B. Предположим, что A появляется, а затем B в кластере отключается. Но приемники не могут потреблять на А снова. Зачем?
Я отладил проект весны, и я обнаружил, что это не ошибка потребителя. На самом деле, весна делает переключение на сервер «A», но следующее исключение возникает:
org.springframework.amqp.rabbit.listener.QueuesNotAvailableException: Не удается подготовить очереди для слушателя. Либо очередь не существует, либо брокер не позволит нам ее использовать. в org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start (BlockingQueueConsumer.java:429) в org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer $ AsyncMessageProcessingConsumer.run (SimpleMessageListenerContainer.java:1022) на Java .lang.Thread.run (Неизвестный источник) Вызвано: org.springframework.amqp.rabbit.listener.BlockingQueueConsumer $ StatementException: Не удалось объявить очереди (ы): [ha.rabbit.channel2] в org.springframework. amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations (BlockingQueueConsumer.java:486) на org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start (BlockingQueueConsumer.java:401) ... 2 м руды
Я проверил файл журнала в rabbidmq:
= ERROR REPORT ==== 14-Sep-2015 :: 03: 45: 41 === Channel ошибку на связи < 0.289 .0> (192.168.1.150:64140 -> 192.168.1.170:5672, vhost: '/', user: 'admin'), канал 2: {amqp_error, not_found, "home node 'rabbit @ vm2' of durable очередь «ha.rabbit.channel2» в vhost '/' недоступна или недоступна », « queue.declare »}
Даже если я перезапущу приложение-потребитель, в то время как в качестве предыдущей конфигурации только сервер A поднят, а B выключен, снова появляется такая же ошибка. Как я могу справиться с этим?
Не знаю о весне, но com.rabbitmq.client имеет https://www.rabbitmq.com/api-guide.html#recovery вариант, который должен решить эту проблему. – Suvitruf
Проверьте это http://stackoverflow.com/a/25189578/1991579 – Suvitruf