[1137]RocketMq安全配置

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

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

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

1.1 登录上面官网地址

1.2 点击下载

1.2.1 点击Latest release v4.7.1

image

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

image

1.2.3 解压如下

image

2、acl服务端配置开启

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

2.1.1 borker.conf增加参数配置

image

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

2.2.1 用户资源权限配置文件

image

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.1 yml文件配置

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

来源:https://www.jianshu.com/p/1af69cba5b68

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值