refactor(mq): 重构笔记收藏与点赞的MQ消费者实现以提升性能和可靠性

- 使用DefaultMQPushConsumer替代RocketMQListener以支持批量消费
- 实现消息批量处理逻辑,减少数据库交互次数
- 添加内存级操作合并,避免重复操作写入数据库
- 配置流量削峰限流,控制数据库QPS在可接受范围
- 增加重试机制和手动ACK确保消息可靠消费
- 调整MQ主题订阅关系,统一消息流转逻辑
- 新增RocketMQ客户端依赖以支持底层API调
- 优化消费者启动和销毁流程,确保资源正确释放
- 修改Mapper支持批量插入或更新操作
- 调整计数服务消费主题,简化消息链路
This commit is contained in:
2025-11-06 20:17:00 +08:00
parent a37e76c87c
commit f49d0e6b76
12 changed files with 291 additions and 281 deletions

View File

@@ -2,6 +2,16 @@ package com.hanserwei.hannote.count.biz.constant;
public interface MQConstants {
/**
* Topic: 计数 - 笔记点赞数
*/
String TOPIC_LIKE_OR_UNLIKE = "LikeUnlikeTopic";
/**
* Topic: 笔记收藏、取消收藏
*/
String TOPIC_COLLECT_OR_UN_COLLECT = "CollectUnCollectTopic";
/**
* Topic: 关注数计数
*/

View File

@@ -29,8 +29,8 @@ import java.util.stream.Collectors;
@Component
@Slf4j
@RocketMQMessageListener(
consumerGroup = "han_note_group_" + MQConstants.TOPIC_COUNT_NOTE_COLLECT,
topic = MQConstants.TOPIC_COUNT_NOTE_COLLECT
consumerGroup = "han_note_group_" + MQConstants.TOPIC_COLLECT_OR_UN_COLLECT,
topic = MQConstants.TOPIC_COLLECT_OR_UN_COLLECT
)
public class CountNoteCollectConsumer implements RocketMQListener<String> {

View File

@@ -28,8 +28,8 @@ import java.util.stream.Collectors;
@Component
@Slf4j
@RocketMQMessageListener(
consumerGroup = "han_note_group_" + MQConstants.TOPIC_COUNT_NOTE_LIKE,
topic = MQConstants.TOPIC_COUNT_NOTE_LIKE
consumerGroup = "han_note_group_" + MQConstants.TOPIC_LIKE_OR_UNLIKE,
topic = MQConstants.TOPIC_LIKE_OR_UNLIKE
)
public class CountNoteLikeConsumer implements RocketMQListener<String> {