Hero Image

RabbitMQ 消息中间件 技术精讲 1. RabbitMQ 简介以及AMQP协议 RabbitMQ 是一个开源的消息代理和 RabbitMQ底层是采用Erlang语言进行编写 开源、性能优秀, 稳定性保障 与spring AMQP完美整合,API丰富 集群模式丰富,表达式配置, HA模式, 镜像队列模型 保证数据不丢失的前提做到高可靠性,可用性 AMQP: 高级消息队列协议 RabbitMQ 的安装以及使用 erlang socat rabbitmq-server rpm -ivh XXXXX.rpm lsof -i:5672 # 查看端口 启用控制台插件 rabbit 可以选择使用内存进行存储 RabbitMQ 核心概念 AMQP核心概念 Server:又称作Broker, 接收客户端的连接,实现AMQP实体服务 Connection: 连接, 应用程序与Broker的网络连接 Channel: 网络信道,几乎所有的操作都在Channel中进行,Channel是进行消息读写的一个通道。客户端可以建立多个Channel,每个Channel代表一个会话任务。 Message: 消息, 服务器和应用程序之间传送的数据,由Properties和Body组成。Properties可以对消息进行修饰,比如消息的优先级、延迟等高级特性;Body则就是消息体内容。 Virtual host: 虚拟地址,用于进行逻辑隔离,是最上层的消息路由。一个Virtual Host里面可以有若干个Exchange 和Queue, 同一个Virtual Host里面不能有相同名称的Exchange或Queue。 Exchange: 交换机,接收消息,根据路由键转发消息到绑定的队列 Binding: Exchange 和Queue之间的虚拟连接,binding可以包含routing key Routing key: 一个路由规则,虚拟机可以用它来确定如何路由一个特定消息 Queue: 也称为Massage Queue, 消息队列,保存消息并将他们转发给消费者 RabbitMQ RabbitMQ默认端口号 4369 (epmd), 25672 (Erlang distribution) 4369 erlang 发现端口 25672 server间通信端口 5672, 5671 (AMQP 0-9-1 without and with TLS) client端通信口 15672 (if management plugin is enabled) 管理界面ui端口 61613, 61614 (if STOMP is enabled) 1883, 8883 (if MQTT is enabled) 生产端的可靠投递 保证消息从生产者到MQ之间的传输是100%可靠的,生产者发送的消息一定能进入消息队列