美文网首页
RocketMq 安全配置

RocketMq 安全配置

作者: IT小分享 | 来源:发表于2020-12-10 11:02 被阅读0次

    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);

        }

    }

    欢迎留言关注收藏点赞

    相关文章

      网友评论

          本文标题:RocketMq 安全配置

          本文链接:https://www.haomeiwen.com/subject/wgmlgktx.html