我正在组建一个基于队列的分布式系统,所有标准的东西。我们使用最新版本的RabbitMQ来提供我们的消息传输层。
我有一些关于实现高可用性的问题(对于我的应用程序而不是实际上是RabbitMQ),我无法通过阅读文档来回答这些问题。非常感谢一些建议,我很可能对Rabbit / AMQP缺乏了解导致问题:)
问题:我有一个消息生产者(称为主要)。只有一个消息生产者。有一个辅助生产者(称为备份),如果失败,应该从主要生产者接管。
我如何使用现有的RabbitMQ功能实现这一目标?
思考:使用主要连接到的“独占”队列。备份将尝试连接到此队列。当主服务器发生故障时,备份将获得与队列的连接并建立对该过程的控制。
我应该使用什么样的正确模式来实现这一目标?我找不到有关竞争生产者等的任何文件,非常感谢您的建议!其他人如何做到这一点?
亲切的问候 TM
答案 0 :(得分:0)
如果你想一次只有一个制作人 - 你用RabbitMQ机制你买不起(除非你得到一些插件,但我不知道这种类型)。您可以在应用程序级别上控制生产者编号。
P.S:
看起来你没有很好地获得AMQP的想法,生产者将消息发布到交换机,同时消费从队列中获取它们。经纪人(RabbitMQ)将消息从交换路由到一个或多个队列(事实上,它是can also route messages to other exchange,但这是另一个故事)。