RocketMQ一些知识地址:RocketMQ架构、工作流程以及安装_rocketmq工作流程-CSDN博客
RocketMQ架构:Producer(生产者),Comsumer(消费者),NameSpace,Broker
动态提醒功能:动态发布者--平台--动态订阅者
实现流程
1. pom导入Mq以及Redis依赖
2. 新建RocketMQ配置类:类中可以创建生产者以及消费者
3. 配置文件中加入rocketmq端口等相关配置
4. RocketMQ工具类:实现同步、异步发送消息方法。(参数:生产者,消息)
5. 用户发布动态功能接口:
1. 向数据库中插入动态
2. 向MQ发布消息,(引入应用上下文用于获得配置类中新增的生产者和消费者)
3. 新建Message
4. 用工具类中同步发送消息方法。
6. 消费用户动态
1. 更改RocketMQ配置类中的消费者功能,使其接收到消息以后对消息进行处理
2. 获取当前消息(动态)的发布者(userid),根据userid获取其粉丝列表,对每个粉丝发送动态信息(存入redis中)。
7. 查询订阅动态
从redis中取出上一步存入的动态信息:
String listStr = redisTemplate.opsForValue().get(key);
一些注意事项
1. RocketMQ工具类中,同步发送消息方法通常会在发送消息后立即等待Broker的响应,而异步发送消息方法则会立即返回,由一个单独的线程去处理Broker返回的响应。
2.
在RocketMQ中,NameSpace主要用于多租户的环境,名称可以类比于一个租户或者一个业务单元。对于一些大型系统,可能需要部署多个RocketMQ集群,每个集群都有自己的一套Topic、生产者、消费者等资源,这时候如果能在每个集群前加个前缀(即NameSpace),可以方便地区分和管理这些资源。
然后在Redis中,类似的概念是Database。一台Redis服务器可以有多个Database,每个Database都像一个独立的Redis服务器。也可以通过Database来隔离不同应用的数据,但是这个方式在实际开发中很少用到。