Estou criando um sistema que fica em dois datacenters para resiliência, usando um modelo ativo / em espera. O sistema requer uma fila de mensagens que entrega mensagens para processamento pelo backend do sistema. Meu design no momento exige que a fila de mensagens (e trocas, etc.) seja compartilhada entre os datacenters como uma única fila virtual. Dessa forma, o failover pode ser obtido fechando os consumidores da fila no site A e iniciando-os no site B - os consumidores simplesmente se inscreverão em seu broker local e se vincularão à única troca global e começarão a receber mensagens enviadas para lá, incluindo aquelas que foram enfileirados enquanto o failover ocorreu.
Eu usei o RabbitMQ no passado, e estou ciente de que ele pode fazer clustering e que o clustering não é adequado para conexões WAN - é muito intolerante a perda de pacotes / particionamento de rede. Eu li sobre o plug-in de federação rMQ, o que parece implicar que dois agentes federados podem permitir que suas trocas sejam associadas por clientes que se conectam uns com os outros.
Não tenho certeza se posso usar isso para alcançar exatamente o que preciso, parece que eu precisaria de cada intermediário do DC para definir uma troca, federar os dois agentes e, em seguida, os clientes em cada site precisariam ligar-se à troca hospedada por seu intermediário local e hospedada no intermediário remoto. Cada troca individual ainda seria local para um corretor específico. Eu entendi isso corretamente?
Segunda pergunta - presumivelmente, o plug-in de federação funciona com clusters rMQ separados? Se eu tivesse um cluster de brokers de rMQ no site A e um cluster semelhante no site B, eu poderia federá-los juntos?