RabbitMQ的典型版本控制策略是什么?

时间:2015-01-06 09:19:10

标签: rabbitmq versioning

我开始研究一个新项目,并且我们被要求将系统构建为一系列微服务,使用RabbitMQ作为它们之间的通信层。

在开发REST API时,我倾向于使用accept HTTP标头来控制版本控制,我发现你可以在RabbitMQ中使用标头交换来以类似的方式路由消息。但是,由于这纯粹是一个内部消息系统,我不确定标头交换的增加复杂性是否真的值得一试?

对RabbitMQ消息进行版本控制的典型设置是什么?在我看来,选项是:

  1. 每个版本的新vhost
  2. 每个Exchange都有名称中的版本(例如MyExchange-v1,MyExchange-v2,...等)
  3. 队列已版本化
  4. 路由密钥已版本化(myroute-2.1。*)
  5. 使用标题交换
  6. 感谢您提供的任何意见。

1 个答案:

答案 0 :(得分:2)

我选择路由密钥版本系统有两个主要原因:

消费者将能够通过多个绑定将(通过队列当然)绑定到兼容版本。使用语义版本(http://semver.org/)标准将通过asterix和哈希标准在此处使用。

您不必使用Rabbitmq作为路由密钥是AMQP的标准功能