首页 > 其他分享 >RabbitMQ - 生产者消息确认、消息持久化、消费者消息确认、消费失败重试

RabbitMQ - 生产者消息确认、消息持久化、消费者消息确认、消费失败重试

时间:2023-03-17 10:14:10浏览次数:25  
标签:持久 消费者 队列 确认 RabbitMQ 消息

1.生产者消息确认

RabbitMQ提供了publisher confirm机制来避免消息发送到MQ过程中丢失。这种机制必须给每个消息指定一个唯一ID。消息发送到MQ以后,会返回一个结果给发送者,表示消息是否处理成功。

 

2.消息持久化

生产者确认可以确保消息投递到RabbitMQ的队列中,但是消息发送到RabbitMQ以后,如果突然宕机,也可能导致消息丢失。

要想确保消息在RabbitMQ中安全保存,必须开启消息持久化机制。

  • 交换机持久化
  • 队列持久化
  • 消息持久化

3.消费者消息确认

RabbitMQ是阅后即焚机制,RabbitMQ确认消息被消费者消费后会立刻删除。

而RabbitMQ是通过消费者回执来确认消费者是否成功处理消息的:消费者获取消息后,应该向RabbitMQ发送ACK回执,表明自己已经处理消息。

 

4.消费失败重试机制

当消费者出现异常后,消息会不断requeue(重入队)到队列,再重新发送给消费者,然后再次异常,再次requeue,无限循环,导致mq的消息处理飙升,带来不必要的压力,比较优雅的一种处理方案是RepublishMessageRecoverer,失败后将消息投递到一个指定的,专门存放异常消息的队列,后续由人工集中处理。

 

文章来源: https://blog.csdn.net/itcast_cn/article/details/127249194

标签:持久,消费者,队列,确认,RabbitMQ,消息
From: https://www.cnblogs.com/loquat6/p/17225595.html

相关文章

  • Linux进程通信 | 消息队列
    什么是消息队列?假设你是一个快递员,你需要将货物从一个仓库运到另一个仓库。但是你发现自己的时间不够用,需要另外请一个人来帮忙。那么,你们之间如何进行协作呢?一种方式是......
  • 为什么需要消息队列?使用消息队列有什么好处?
    为什么需要消息队列?当系统中出现“生产“和“消费“的速度或稳定性等因素不一致的时候,就需要消息队列,作为抽象层,弥合双方的差异。消息被发送到队列中,“消息队列”是在消......
  • rocketMq springboot2 发送广播消息
    广播消息:一个点发送,所有有监听订阅的程序都能收到消息。应用场景:一个配置更新了,其他点都需要知道配置更新需加载。 mq创建主要是创建组时与队列有点区别mqadminupdateSubG......
  • 飞书-消息推送
    配置:1.  2.  3.生成webhook-图省略-加密code:#-*-coding:utf-8-*-'''飞书消息通知-用于报告通知'''importrequestsimportjsonimportloggingimporttime......
  • rabbitmq-demo
    demoConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的socket链接,它封装了socket协议相关部分逻辑。ConnectionF......
  • 如何保证消息的可靠性投递
    一、消息队列的投递confirm确认机制一些消息中间件会有消息投递确认机制,比如当RabbitMQ成功接收到消息之后会自动异步的回调生产者的一个接口返回成功与否的消息,但是我们......
  • shell 9 -管理重任- 向用户终端发送消息
    1#!/bin/bash2set-x3USER=$14devices=`ls/dev/pts/*-l|awk'{print$3,$10}'|grep$USER|awk'{print$2}'`5fordevin$devices6do......
  • 第93讲(HelloActor整体介绍):Akka第一个案例动手实战开发消息实体类
    第93讲:Akka第一个案例动手实战开发消息实体类HelloActor的整体框架及实现:一:HelloActor包括的actors:1AggregateActor:对最后所有ReduceActor的结果进行统计2MapActor:对收......
  • Java+Redis 通过Lua 完成库存扣减,创建消息队列,异步处理消息--实战
    需要完成功能借助redisStream数据结构实现消息队列,异步完成订单创建,其中涉及到了缓存(击穿,穿透,雪崩),锁(Redisson),并发处理,异步处理,Lua脚本IDE:IDEA2022 1、读取库存数......
  • 软件确认测试知识分享,如何获取权威软件测试报告?
    一、软件确认测试是什么?确认测试是对通过组合测试的软件进行的,这些软件已经存于系统目标设备的介质上。确认测试的目的是要表明软件是可以工作的,并且符合”软件需......