RabbitMQ之死信

死信概念

顾名思义就是无法被消费的消息,一般来说,product将消息投递到broke或者直接到queue里,consumer从queue取出消息进行消费,但某些时候由于特定的原因导致queue中的某些消息无法被消费这样的消息如果没有后续的处理么就变成了死信,有死信自然就有私信队列。

MQ

RabbitMQ之发布与确认

发布与确认原理

生产者将信道设置成confirm模式,一旦信道进入confirm模式,所有该信道上面发布的消息都会被指派一个唯一的ID(从1开始),一旦消息被投递到所有匹配队列之后,broker就会发送一个确认给生产者(包含消息唯一ID),这就使得生产者知道消息已经正确到达目的队列了,如果消息和队列是可持久化的,那么确认消息会在消息写入磁盘之后发出,broker回传给生产者的确认消息中deliver-tag域包含了确认消息的序列号,此外broker也可以设置basic.ack的multiple域,表示这个序列号之前的所有消息都已经得到了处理。

MQ

RabbitMQ之Work Queues

Work Queues

工作队列(又称任务队列)的主要思想是避免立即执行资源密集型任务,而不得不等待它完成。相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台运行的工作进程将弹出任务并最终执行作业。当有多个线程时,这些工作线程将一起处理这些任务。

MQ

RabbitMQ万恶起源之环境搭建

使用Docker搭建RabbitMQ环境

本次环境搭建使用的Docker,因为是学习嘛,Docker是在是太香了

MQ

什么是消息队列

什么是消息队列(MQ)

MQ从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了MQ之后,消息发送上游只需要依赖MQ,不用依赖其他服务。

MQ