更新时间:2024-03-05 GMT+08:00

使用ACL权限访问

实例开启ACL访问控制后,消息生产者和消费者都需要增加用户认证信息。

准备环境

开源的Java客户端支持连接分布式消息服务RocketMQ版,推荐使用的客户端版本为4.9.8

通过以下任意一种方式引入依赖:
  • 使用Maven方式引入依赖。
    <dependency>
        <groupId>org.apache.rocketmq</groupId>
        <artifactId>rocketmq-client</artifactId>
        <version>4.9.8</version>
    </dependency>
    
    <dependency>
        <groupId>org.apache.rocketmq</groupId>
        <artifactId>rocketmq-acl</artifactId>
        <version>4.9.8</version>
    </dependency>
  • 下载依赖JAR包

生产者增加用户认证信息

  1. 在生产者客户端新建配置文件“config.yaml”,添加如下认证信息。如果配置文件已存在,无需再次创建,直接添加认证信息。

    ACL_ACCESS_KEY: "******"
    ACL_SECRET_KEY: "******"

    ACL_ACCESS_KEY为用户名,ACL_SECRET_KEY为用户的密钥。创建用户的步骤,请参见创建用户。为了确保用户名和密钥的安全性,建议对用户名和密钥进行加密处理。

  2. 生产者初始化时需要增加“rpcHook”参数。

    • 普通消息、顺序消息和定时消息,增加如下代码。
      RPCHook rpcHook = new AclClientRPCHook(new SessionCredentials(ACL_ACCESS_KEY, ACL_SECRET_KEY));
      DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName", rpcHook);
    • 事务消息,增加如下代码。
      RPCHook rpcHook = new AclClientRPCHook(new SessionCredentials(ACL_ACCESS_KEY, ACL_SECRET_KEY));
      TransactionMQProducer producer = new TransactionMQProducer("ProducerGroupName", rpcHook);

消费者增加用户认证信息

  1. 在消费者客户端新建配置文件“config.yaml”,添加如下认证信息。如果配置文件已存在,无需再次创建,直接添加认证信息。

    ACL_ACCESS_KEY: "******"
    ACL_SECRET_KEY: "******"

    ACL_ACCESS_KEY为用户名,ACL_SECRET_KEY为用户的密钥。创建用户的步骤,请参见创建用户。为了确保用户名和密钥的安全性,建议对用户名和密钥进行加密处理。

  2. 消费者初始化时需要增加“rpcHook”参数。无论是普通消息、顺序消息、定时消息,还是事务消息,都增加如下代码。

    RPCHook rpcHook = new AclClientRPCHook(new SessionCredentials(ACL_ACCESS_KEY, ACL_SECRET_KEY));
    DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(null, "ConsumerGroupName", rpcHook);