【八股】消息中间件

通用MQ问题

使用场景

  • 异步发送(验证码、短信、邮件)
  • MYSQL和Redis,ES之间的数据同步
  • 分布式事务
  • 削峰填谷

消息的重复消费问题

👉定义:消费者已经消费了消息,但是可能由于网络抖动或者消费者挂了导致ack回执没有发送给MQ

👉解决方案

  1. 为每条消息设置一个唯一的标识id,在消费者消费消息时,验证这个业务id是否存在,如果存在则说明已经消费过,不要再消费了。
  2. 幂等方案:添加redis分布式锁、数据库锁(乐观锁、悲观锁)

RabbitMQ

消息发送的一般流程

  1. 消息的发送者(publisher)将消息发送给交换机(exchange)
  2. 由交换机路由到各个消息队列(queue)
  3. 再由消费者(consumer去消费消息)。

如何保证消息不丢失

👉开启生产者确认机制Publisher Confirm,如果消息发送失败会返回不同的ack【比如step1失败,响应nack publish-confirm;step2失败,响应

相关推荐

  1. 八股消息中间

    2024-05-11 04:18:07       29 阅读
  2. 消息中间-RocketMQ

    2024-05-11 04:18:07       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-11 04:18:07       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-11 04:18:07       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-11 04:18:07       87 阅读
  4. Python语言-面向对象

    2024-05-11 04:18:07       96 阅读

热门阅读

  1. 笔记2024

    2024-05-11 04:18:07       29 阅读
  2. Python入门系列-03 matplotlib库安装

    2024-05-11 04:18:07       35 阅读
  3. Rancher简介

    2024-05-11 04:18:07       32 阅读
  4. Ansible

    Ansible

    2024-05-11 04:18:07      25 阅读
  5. php 修改 文件权限 函数chmod()

    2024-05-11 04:18:07       33 阅读
  6. webpack

    webpack

    2024-05-11 04:18:07      27 阅读