Skip to content

[Refactor] 重构 RabbitMQ 模块:引入 Spring AMQP 替代原生 Client #125

@yuefengw

Description

@yuefengw

issue类型

  • 功能优化

当前问题

1. 原生 Client 维护成本高

  • 需手动创建管理连接池
  • 消费者使用 while(true) 轮询
  • 无多消费者并发能力

2. 缺少消息可靠性保障

  • 生产端:消息发送后无回调机制,无法确认消息是否成功到达 Exchange 或 Queue
  • 消费端:缺乏死信机制

3. 其他问题

  • 无消费幂等性,可能重复消费

解决方案

1. 引入Spring AMQP 替代原生 RabbitMQ Client

  • 利用 Spring Boot 自动配置管理 ConnectionFactory 和 CachingConnectionFactory
  • 使用 @RabbitListener 注解驱动,替代轮询拉取模式,实现推模式消费
  • 配置并发消费

2. 配置死信队列和失败补偿

  • 配置 Publisher Confirm 和 Publisher Return,并记录 log.error
  • 配置死信队列

3. 使用锁

  • 在消费端利用 Redis (SETNX + TTL) 记录 Message ID 或业务 Key,防止重复消费

详细信息已分享在知识星球🌏:https://articles.zsxq.com/id_6fu347bbecgh.html

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions