全部产品
云市场

产品更新日志

更新时间:2019-09-13 20:34:12

在 2019 年 1 月 23 日,消息队列 MQ 优化了资源隔离、资源申请、协议支持以及权限管理。本文提供相关更新说明,帮助您更顺畅地使用消息队列 MQ。

说明:为兼容新老资源配置,建议您将 ons-client 客户端升级到最新版本。

资源隔离优化(实例化支持)

消息队列 MQ 开放实例化功能,解决多租之间的隔离问题,每个用户可以在同一个地域(Region)内购买多个实例,每个实例之间逻辑隔离或者物理隔离。

消息队列 RokcetMQ 实例分为以下两种类型:

  • 标准版:不同实例之间逻辑隔离,每个地域最多创建 8 个实例。

  • 铂金版:不同实例之间物理隔离,每个地域铂金版实例个数不限。详情请查看 消息队列 MQ 铂金版

为兼容老用户的既有资源,消息队列 RokcetMQ 实例可分为以下两种:

  • 默认实例(兼容老用户的既有资源):
    • 无独立命名空间,实例内或者跨实例之间,资源命名必须全局唯一;
    • 对消息队列 MQ 老用户来说,既有资源所在地域将自动生成一个默认的无独立命名空间实例;
    • 接入点配置(可在控制台实例详情页面中获取):
      1. // 推荐配置:
      2. properties.put(PropertyKeyConst.NAMESRV_ADDR, "xxxx");
      3. // 兼容配置(不推荐继续使用, 建议逐渐升级为推荐配置)
      4. properties.put(PropertyKeyConst.ONSAddr, "xxxx");
  • 新建实例:
    • 有独立命名空间,资源命名确保实例内唯一,跨实例之间可重名;
    • 接入点配置(可在控制台实例详情页面中获取):
      1. // 推荐配置:
      2. properties.put(PropertyKeyConst.NAMESRV_ADDR, "xxx");
    • ons-client 客户端必须升级到最新版本:

资源申请流程优化

原消息队列 MQ 的资源包括以下三个部分:

  • 消息主题(Topic)
  • 生产者(Producer ID)
  • 消费者(Consumer ID)

三者之间都是多对多的对应关系,三者之间的关系复杂而难以理解;对于中、大型企业客户来说,每创建一个 Topic,都要关联或者更新 Producer ID 和 Consumer ID,流程过于复杂。

因此,为进一步优化用户体验,降低新用户的接入门槛,对资源申请的接入流程进行简化。

  • 资源申请方面,主要包括以下两个部分:

    • Topic 管理(保持不变):
      • Topic 资源申请,一级消息类型,通过 Topic 对消息进行分类。
    • Group 管理:
      • 取消原 Producer ID 的申请,与原 Consumer ID 统一为 Group ID,即对应控制台上,取消原生产者管理,与原消费者管理统一为 Group 管理
      • 取消原申请 Producer ID 或 Consumer ID 时需要指定 Topic 的关联约束,只需申请 Group ID 即可在代码中直接配置与 Topic 的关联使用;
      • 兼容性相关问题:
        • 原申请的 Producer ID 列表将不再显示,不影响当前业务的正常使用;
        • 原申请的以 “CID-“ 或者 “CID_” 打头的 Consumer ID 仍可以正常使用,代码中既可在PropertyKeyConst.ConsumerId中设置,亦可在PropertyKeyConst.GROUP_ID中设置。
  • 针对示例代码,原来已经在使用的 Producer ID 或者 Consumer ID 保持兼容,不影响当前在线业务的正常使用,但建议逐步替换为新的推荐配置方式:

    • 推荐方式:将 Producer ID、Consumer ID 的概念融合成 Group ID
      1. // 设置 PropertyKeyConst.GROUP_ID,原 PropertyKeyConst.ProducerId 和 PropertyKeyConst.ConsumerId 会被 @Deprecated
      2. properties.put(PropertyKeyConst.GROUP_ID, "原 CID-XXX 或 GID-XXX");
    • 兼容方式:Producer ID 用来标识生产者,Consumer ID 用来标识消费者
      1. // 创建 Producer 时需要配置 PropertyKeyConst.ProducerId
      2. properties.put(PropertyKeyConst.ProducerId, "原 PID-XXX 或 GID-XXX");
      3. // 创建 Consumer 时需要配置 PropertyKeyConst.ConsumerId
      4. properties.put(PropertyKeyConst.ConsumerId, "原 CID-XXX 或 GID-XXX");

HTTP 协议开放和多语言客户端支持

消息队列 MQ 的标准版实例支持 HTTP 协议,采用 RESTful 标准,方便易用,快速接入,跨网络能力强,并随之开放 7 种多语言客户端。详情请参见 HTTP 协议

RAM 授权策略迁移

基于阿里云访问控制的统一管理要求,消息队列 MQ 当前的主子账号授权功能将于 2019 年 4 月 2 日停止维护,请尽快完成授权配置的迁移。

  • 建议尽快开始 RAM 相关的策略配置,详情请参见 RAM 主子账号授权
  • 原来已经授权过的资源不会有任何影响,业务仍可正常使用,但是建议统一到 RAM 上进行配置与管理。