Как продолжать получать сообщения, когда мастер-узел выходит из строя?[RabbitMQ] - PullRequest
0 голосов
/ 21 июня 2019

У меня есть две машины, на которых работают RabbitMQ, Master (ip1) и Slave (ip2), и я отразил их, добавил политику, синхронизировал очередь и обмен, но когда я отправляю сообщения, и мастер отключается, подчиненный перестает отвечать и мое приложение больше не может отправлять сообщения.

У меня есть виртуальный хост, надежная очередь и обмен, политика продвижения подчиненного.

Полис

Pattern             ^test
Apply to            all
Definition  
ha-mode:            exactly
ha-params:          5
ha-promote-on-failure:  always
ha-promote-on-shutdown: always
ha-sync-mode:           automatic
queue-master-locator:   random
Priority            0

Это приложение, которое я использую для публикации сообщений (РЕДАКТИРОВАТЬ: очередь уже установлена ​​на пользовательском интерфейсе RabbitMQ)

import pika
import time

credentials = pika.PlainCredentials('usr', 'pass')

parameters = pika.ConnectionParameters('ip1',
                                       5672,
                                       'virtual_host',
                                       credentials)

connection = pika.BlockingConnection(parameters)

channel = connection.channel()

channel.exchange_declare(
    exchange="test_exchange",
    exchange_type="direct",
    passive=False,
    durable=True,
    auto_delete=False)

##channel.queue_declare(queue='test', durable=True, exclusive=False, auto_delete=False)

input('Press ENTER to begin')

for i in range(10000):
    channel.basic_publish(exchange='',
                      routing_key='test',
                      body=('Hello World! '+ str(i)))
    time.sleep(0.001)
print(" [x] Sent 'Hello World!'")

Я хочу, чтобы, когда мастер вышел из строя, раб получил повышение и получил сообщения.

...