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

标签 rabbitmq versioning

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

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

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

  • 每个版本的新虚拟主机
  • 每个 Exchange 的名称中都有版本(例如 MyExchange-v1、MyExchange-v2 等)
  • 队列版本化
  • 路由键是版本化的 (myroute-2.1.*)
  • 使用 header 交换

  • 感谢您提供的任何意见。

    最佳答案

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

    消费者将能够通过多个绑定(bind)(当然是通过队列)绑定(bind)到他们的兼容版本。使用语义版本 (http://semver.org/) 标准将在此处通过 asterix 和散列标准加以利用。

    您不必使用 Rabbitmq,因为路由键是 AMQP 的标准功能

    关于rabbitmq - RabbitMQ 的典型版本控制策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27795520/

    相关文章:

    python - Pika blocking_connection.py 随机超时连接到 RabbitMQ

    messaging - AMQP 与 Websphere MQ

    versioning - 构建 Debian 软件包时自动修改版本

    npm - SemVer 冲突 : How to release bug fix over the last stable version if there are some alpha/beta/rc versions and the work is in progress?

    jsp - 我什么时候应该更改我的标签库的 tlib 版本?

    C# 序列化对象版本

    node.js - pathspec 的标准版本更改日志生成问题

    RabbitMQ:从队列扇出(不是从交换)

    linux - Linux RHEL 上的 RabbitMQ 内部内存路径映射到另一个位置

    ruby - 如何在 eventmachine 中启动多个工作进程?