RocketMq 安全配置

RocketMq是一款开源高性能,轻量级,统一消息传递引擎。经受住亿万级高并发的检验。许多企业系统都在使用。在并发削峰,异步处理,应用解耦的等场景都有它的身影。网上文章大多数介绍RocketMq的设计原理,集群配置,项目集成等。安全方面相对比较少,有出现的安全资料,在实际使用上也难走通。企业级系统安全方面也挺重要的,花了些时间研究RocketMq安全方面的,也有点收获,写此文章做总结,让小伙伴少走弯路。相信有些企业系统使用RocketMq的时候,没出现安全问题不会去开启安全校验的。

RocketMq安全相关功能主要是ACL权限管控。ACL是access control list的简称,俗称访问控制列表,想了解更多原理小伙伴,下方留言,有时间再发一些。ACL主要对用户角色,权限,资源访问的权限校验控制,个人理解是这样只有在RocketMq平台开通的合法账户,获得授权才能对RocketMq进行访问。ACL在4.4以后版本才有的,它出现使得RocketMq在很多对安全性要求较高的领域广泛使用。这次分享的是Windows版下Acl服务端与客服端的使用,Linux有疑问下方留言大家一起探讨。

1RocketMq服务端安装包下载(官网地址http://rocketmq.apache.org/)

1.1 登录上面官网地址

1.2 点击下载

1.2.1点击Latest release v4.7.1

1.2.2点击rocketmq-all-4.7.1-bin-release.zip

1.2.3解压如下

2 acl服务端配置开启

2.1 打开conf目录下broker.conf,加上aclEnable=true

2.1.1borker.conf增加参数配置

2.2 打开conf目录下plain_acl.yml,里面是配置账号,密码,权限的如下图

2.2.1用户资源权限配置文件

3服务开启命令

3.1进入到bin目录(上面截图1.2.3的目录)开启nameServer命令如下执行

            .\mqnamesrv

3.2进入到bin目录(上面截图1.2.3的目录)开启broker命令如下,要指定broker.conf文件,不然acl开启失败,linux下也要指定.

.\mqbroker -n localhost:9876 -c  F:\DeveTool\rocketmq-all-4.7.1-bin-release\rocketmq-all-4.7.1-bin-release\conf\broker.conf

4使用过程中一些问题

项目发送消息会出现Algorithm HmacSHA1 not available,把jdk目录下/jre/lib/ext/找到sunjce_provider.jar,复制到rocketmq/lib目录中,重启broker。

5实际项目应用,当服务端开启ACL,生产者与消费者端配置accessKey,secretKey,nameServer等,,accessKey类似用户名,secretKey类似密码,不然发送,接收消息失败。

5.1 依赖引用

           <dependency>
                <groupId>org.apache.rocketmq</groupId>
                <artifactId>rocketmq-spring-boot-starter</artifactId>
                <version>2.0.4</version>
            </dependency>

5.2生产者端yml文件配置,rocketmq全新的一个配置,不属于其他项的。

5.2.1生产者端yml文件配置

   rocketmq:
  # rocketmq的NameServer地址
  name-server: 127.0.0.1:9876
  # 生产者端需要配置
  producer:
    # 必须指定一个group
    group: groupB
    send-message-timeout: 6000
    access-key: rocketmq2
    secret-key: 12345678

5.2.2 生产者测试代码。

@Service
public class RocketMqDemoServiceImpl implements RocketMqDemoService {
    @Resource
    private RocketMQTemplate rocketMQTemplate;

    @Override
    public void sendMessage() {
        rocketMQTemplate.syncSend("topicB", "222");
    }
}

5.3消费者配置

5.3.1yml文件配置

rocketmq:
  # rocketmq的NameServer地址
  name-server: 127.0.0.1:9876

5.3.2消费者监听业务对象类名上面配置

@RocketMQMessageListener(consumerGroup = "groupB", topic = "topicB",
        accessKey = "rocketmq2",secretKey = "12345678")

5.3.3消费端监听器测试代码如下

 @Component
@RocketMQMessageListener(consumerGroup = "groupB", topic = "topicB",
        accessKey = "rocketmq2",secretKey = "12345678")
public class DemoMqListener implements RocketMQListener {

    @Override
    public void onMessage(Object o) {
        System.out.println(o);
    }

}

欢迎留言关注收藏点赞

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值