我想在AMQP (RabbitMQ)上维护微服务(几种不同类型)拓扑,并使用中央注册表来维护正常运行时间和配置:
- 所有微服务连接到AMQP并发布其存在
- 一个主服务想要发现某种类型的所有worker服务
- 重新启动的worker服务将从中央存储库读取其最后的配置
像etcd和ZooKeeper这样的产品是在HTTP上工作的,而不是在AMQP上。
在AMQP上有标准的方法吗?
感谢这里RabbitMQ的问题是你需要的是一种特殊的持久化——但这在RabbitMQ中并不存在。
具体来说,你可以考虑使用"state of world"特性(RabbitMQ中缺少)。这基本上意味着代理会记住给定键(或其他组合)的最后一条消息。可用于实现发现服务。
BUT -我仍然推荐使用例如ZooKeeper,因为它还提供了检测突然微服务断开的工具;一个需要活动"服务器端"的功能;功能。