随笔分类 - rabbitMQ
摘要:## 项目整体结构  本文涵盖了关于RabbitMQ很多方面的知识点, 如: - 消息发送确认机制 - 消
阅读全文
摘要:## 前言 ``` // 处理成功 false 表示不批量处理,批量处理容易丢失信息,消息会被rabbitmq broker 删除。 channel.basicAck(envelope.getDeliveryTag(), false); // 处理失败 重新入队 channel.basicNack(
阅读全文
摘要:## 前言 在之前的发布确认中,生产者发送消息到mq中,消费者在从mq中取出消息满足持久化的. 发布确认是一个保证RabbitMQ 可靠性的一个机制 保证生产者将信息成功的发送到 RabbitMQ的 server端了,那么broker就会回一个确认,如果没有收到或者收到拒绝信息,那么说明可能网络不好
阅读全文
摘要:## 概念 所谓“延迟消息”是指当消息被发送以后,并不想让消费者立刻拿到消息,而是等待特定时间后,消费者才能拿到这个消息进行消费 ## 使用场景 1、订单在十分钟之内未支付则自动取消 2、预定会议后,需要在预定时间点前十分钟通知各个与会人员参加会议。 3、淘宝七天自动确认收货,自动评价功能等 ##
阅读全文
摘要:## 死信的概念 死信队列(Dead Letter Queue)是指当消息无法被消费者正常消费时,将这些无法消费的消息发送到专门的死信队列中,以便进行进一步的处理。这种处理方式通常被称为“死信处理”。 应用场景:为了保证订单业务的消息数据不丢失,需要使用到 RabbitMQ 的死信队列机制,当消息
阅读全文
摘要:## 概念 RabbitMQ 消息传递模型的核心思想是: **生产者生产的消息从不会直接发送到队列**。实际上,通常生产 者甚至都不知道这些消息传递传递到了哪些队列中。 相反,**生产者只能将消息发送到交换机(exchange)**,交换机工作的内容非常简单,一方面它接收来 自生产者的消息,另一方面
阅读全文
摘要:## 概念 消息是可以持久化保存的,持久的目的是为了处理任务丢失情况的,采用持久化可以保证消息存储,且消息不被丢失。 默认情况下 RabbitMQ 退出或由于某种原因崩溃时,它忽视队列 和消息,除非告知它不要这样做。确保消息不会丢失需要做两件事: **我们需要将队列和消息都标 记为持久化。** ##
阅读全文
摘要:## 前言 对于mq来说,默认采用的是轮询的消息发送模式,例如一个生产者对接多个消费者,那么发送消息时,消费者1接收一个消息后就轮到了消费者2接收,依次类推大致的算法就是取模的方式。 但是在某种场景下这种策略并不是 很好,比方说有两个消费者在处理任务,其中有个消费者 1 处理任务的速度非常快,而另外
阅读全文
摘要:# MQ中的消息应答 ## 前言 在消息队列当中,生产者发送消息给消费者,其中生产者通过中间件也就是rabbitmq将消息存储到此处,由消费者从mq中获取消息,并处理之后的逻辑,由于mq默认是采用自动应答机制,消费者在获取消息后就会通知mq,mq此时就会将消息内容删除,但是此时处理业务逻辑时发生了某
阅读全文