- 使用DefaultMQPushConsumer替代RocketMQListener以支持批量消费 - 实现消息批量处理逻辑,减少数据库交互次数 - 添加内存级操作合并,避免重复操作写入数据库 - 配置流量削峰限流,控制数据库QPS在可接受范围 - 增加重试机制和手动ACK确保消息可靠消费 - 调整MQ主题订阅关系,统一消息流转逻辑 - 新增RocketMQ客户端依赖以支持底层API调 - 优化消费者启动和销毁流程,确保资源正确释放 - 修改Mapper支持批量插入或更新操作 - 调整计数服务消费主题,简化消息链路
43 lines
1.9 KiB
XML
43 lines
1.9 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
<mapper namespace="com.hanserwei.hannote.note.biz.domain.mapper.NoteCollectionDOMapper">
|
|
<resultMap id="BaseResultMap" type="com.hanserwei.hannote.note.biz.domain.dataobject.NoteCollectionDO">
|
|
<!--@mbg.generated-->
|
|
<!--@Table t_note_collection-->
|
|
<id column="id" jdbcType="BIGINT" property="id" />
|
|
<result column="user_id" jdbcType="BIGINT" property="userId" />
|
|
<result column="note_id" jdbcType="BIGINT" property="noteId" />
|
|
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
|
|
<result column="status" jdbcType="TINYINT" property="status" />
|
|
</resultMap>
|
|
<sql id="Base_Column_List">
|
|
<!--@mbg.generated-->
|
|
id, user_id, note_id, create_time, `status`
|
|
</sql>
|
|
|
|
<insert id="insertOrUpdate" parameterType="com.hanserwei.hannote.note.biz.domain.dataobject.NoteCollectionDO">
|
|
INSERT INTO t_note_collection (user_id, note_id, create_time, status)
|
|
VALUES (#{userId}, #{noteId}, #{createTime}, #{status})
|
|
ON DUPLICATE KEY UPDATE
|
|
create_time = #{createTime}, status = #{status};
|
|
</insert>
|
|
|
|
<update id="update2UnCollectByUserIdAndNoteId"
|
|
parameterType="com.hanserwei.hannote.note.biz.domain.dataobject.NoteCollectionDO">
|
|
update t_note_collection
|
|
set status = #{status},
|
|
create_time = #{createTime}
|
|
where user_id = #{userId}
|
|
and note_id = #{noteId}
|
|
and status = 1
|
|
</update>
|
|
|
|
<insert id="batchInsertOrUpdate" parameterType="list">
|
|
INSERT INTO t_note_collection (user_id, note_id, status, create_time)
|
|
VALUES
|
|
<foreach item="item" collection="noteCollectionDOS" separator=",">
|
|
(#{item.userId}, #{item.noteId}, #{item.status}, #{item.createTime})
|
|
</foreach>
|
|
ON DUPLICATE KEY UPDATE status = VALUES(status)
|
|
</insert>
|
|
</mapper> |