深入理解RabbitMQ中的prefetch_count参数

前提

在某一次用户标签服务中大量用到异步流程,使用了RabbitMQ进行解耦。其中,为了提高消费者的处理效率针对了不同节点任务的消费者线程数和prefetch_count参数都做了调整和测试,得到一个相对合理的组合。这里深入分析一下prefetch_count参数在RabbitMQ中的作用。

RabbitMQ扩展之交换器间的绑定

概要

AMQP-0-9-1中提供了queue.bind方法用于绑定一个队列到一个交换器,然后发送消息的时候,数据流总是先通过交换器(source)最终到达目标队列中(destination)。RabbitMQ实现了扩展,为交换器提供了一个exchange.bind方法用于绑定一个交换器到另一个交换器。交换器之间的绑定和队列与交换器的绑定在语义上是相同的:单向的、使用路由键和多种交换器类型。这一点允许使用者创建更丰富的路由拓扑。exchange.bind方法中的source和destination反映了消息的流向:从源(source)交换器到目标(destination)交换器。

queue.bind方法一样,可以在相同的绑定端点上创建多个不同的交换器绑定,例如:

  • exchange-source -> exchange-destination-1 -> queue-1
  • exchange-source -> exchange-destination-2 -> queue-2
  • exchange-source -> exchange-destination-3 -> queue-3

RabbitMQ扩展之直接回复(Direct reply-to)

前提

本文内容参考RabbitMQ官方文档Direct reply-to

RabbitMQ扩展之消费者优先级

前提

本文来源于官方文档Consumer Priorities

RabbitMQ扩展之消费者消息预读取

前提

本文来源于官方文档Consumer Prefetch

RabbitMQ扩展之消费者取消通知

前提

本文来源于官方文档Consumer Cancel Notification

RabbitMQ消息发送、消费和确认

前提

前一篇文章介绍到RabbitMQ相关组件的声明,组件声明完成之后,就可以发送消息和消费消息,消费消息的时候需要考虑消息的确认。

RabbitMQ队列、交换器和绑定的操作

前提

如果能提前先阅读一下之前写过的一篇文章理解RabbitMQ中的AMQP-0-9-1模型,那么这篇文章应该会比较容易理解。

理解RabbitMQ中的AMQP-0-9-1模型

前提

之前有个打算在学习RabbitMQ之前,把AMQP详细阅读一次,挑出里面的重点内容。后来找了下RabbitMQ的官方文档,发现了有一篇文档专门介绍了RabbitMQ中实现的AMQP模型部分,于是直接基于此文档和个人理解写下这篇文章。

RabbitMQ服务端的安装和使用

前提

工作接近3年,一直有使用RabbitMQ作为服务间解耦的中间件,但是一直没有做一系列学习和总结,这里决心做一个系列总结一下RabbitMQ的运维、使用以及生产中遇到的问题等,以便日后直接拿起来使用。整个系列使用的Linux系统为CentOS 7的最新版本CentOS-7-x86_64-Minimal-1804。而RabbitMQ Server使用当前最新的版本3.7.9.RELEASE。