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

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

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

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

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

  • 标准版:不同实例之间逻辑隔离,每个地域最多创建8个实例。
  • 铂金版:不同实例之间物理隔离,每个地域铂金版实例个数不限。更多信息,请参见消息队列RocketMQ版铂金版

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

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

资源申请流程优化

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

  • 消息主题(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
          // 设置PropertyKeyConst.GROUP_ID,原PropertyKeyConst.ProducerId和PropertyKeyConst.ConsumerId会被@Deprecated
          properties.put(PropertyKeyConst.GROUP_ID,"原CID-XXX或GID-XXX")。            
    • 兼容方式:Producer ID用来标识生产者,Consumer ID用来标识消费者
          // 创建Producer时需要配置PropertyKeyConst.ProducerId。
          properties.put(PropertyKeyConst.ProducerId,"原 PID-XXX 或 GID-XXX")。
          // 创建Consumer时需要配置PropertyKeyConst.ConsumerId。
          properties.put(PropertyKeyConst.ConsumerId,"原 CID-XXX 或 GID-XXX")。          

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

RAM授权策略迁移

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

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