rabbitmq专题--介绍

概念

RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端。用于分布式系统中存储转发消息,在易用性,扩展性,高可用性等方面表现不俗。

配置

Rabbitmq 有一套默认的配置,能够满足日常开发需求,如果需要修改,需要自己创建一个配置文件。

rabbitmq专题--介绍

端口

Rabbitmq会绑定一些端口,安装完后,需要将这些端口添加至防火墙。

4369:是Erlang的端口/结点名称映射程序,用来跟踪结点名称监听地址,在集群中起到类似DNS的作用。

5672,5671:AMQP 0-9-1和1.0客户端端口,没有使用SSL和使用SSL的端口

25672

用于rabbitmq节点间和CLI工具通信,配合4369使用。

15672

HTTP_API端口,管理员用户才能访问,用于管理rabbitmq,需要启用management插件。

AMQP

rabbitmq专题--介绍

AMQP结构

rabbitmq专题--介绍

Rabbitmq整体结构

rabbitmq专题--介绍

Producer

rabbitmq专题--介绍

Broker

rabbitmq专题--介绍

Virtual Host

rabbitmq专题--介绍

Channel

rabbitmq专题--介绍

RoutingKey

rabbitmq专题--介绍

Exchange

rabbitmq专题--介绍

Queue

rabbitmq专题--介绍

Binding

rabbitmq专题--介绍

Exchange 类型

rabbitmq常用的交换器类型有fanout,direct,topic,headers这4种

fanout

rabbitmq专题--介绍

direct

rabbitmq专题--介绍

topic

rabbitmq专题--介绍

headers

rabbitmq专题--介绍

Consumer

rabbitmq专题--介绍

运转流程

rabbitmq专题--介绍
生产者发送消息的过程

  1. 生产者连接到rabbitmq broker,建立一个连接(connection),开启一个信道(channel)
  2. 生产者声明一个交换器,并设置相关属性,比如 交换机类型,是否持久化等
  3. 生产者声明一个队列并设置相关属性,比如是否排他,是否持久化,是否自动删除等
  4. 生产者通过路由键将交换器和队列绑定起来
  5. 生产者发送消息至rabbitmq broker,其中包含路由键,交换器等信息
  6. 相应的交换器根据接收到的路由键查找相匹配的队列
  7. 如果找到,则将从生产者发送过来的消息存入相应的队列中
  8. 如果没有找到,则根据生产者配置的属性选择丢弃还是回退给生产者
  9. 关闭信道,关闭连接