一,简介
RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种客户端。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗,消息队列是一种应用系统之间的通信方法,是通过读写如队列的信息来通信(RPC 则是通过直接调用彼此来通信的)
AMQP (Advanced Message Queuing Protocol) 高级消息队列协议是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
二,基本概念
- ConnectionFactory (连接工厂): 生产 Connection 的的工厂
- Connection (连接):是 RabbitMQ 的 socket 的长链接,它封装了 socket 协议相关部分逻辑
- Channel (频道|信道): 是建立在 Connection 连接之上的一种轻量级的连接,我们大部分的业务操作是在 Channel 这个接口中完成的,包括定义队列的声明 queueDeclare、交换机的声明 exchangeDeclare 、队列的绑定 queueBind、发布消息 basicPublish 、消费消息 basicConsume 等。如果把 Connection 比作一条光纤电缆的话,那么 Channel 信道就比作成光纤电缆中的其中一束光纤。一个 Connection 上可以创建任意数量的 Channel。
名称:
- Producer (生产者):生产者用于发布消息
- Exchange (交换机):生产者会将消息发送到交换机,然后交换机通过路由策略(规则)将消息路由到匹配的队列中去
- Routing Key (路由键):一个 String 值,用于定义路由规则,在队列绑定的时候需要指定路由键,在生产者发布消息的时候需要指定路由键,当消息的路由键和队列绑定的路由键匹配时,消息就会发送到该队列。
- Queue (队列):用于存储消息的容器,可以看成一个有序的数组,生产者生产的消息会发送到交换机中,最终交换机将消息存储到某个或某些队列中,队列可被消费者订阅,消费者从订阅的队列中获取消息。
- Binding (绑定): Binding 并不是一个概念,而是一种操作,RabbitMQ 中通过绑定,以路由键作为桥梁将 Exchange 与 Queue 关联起来(Exchange —> Routing Key —> Queue),这样 RabbitMQ 就知道如何正确地将消息路由到指定的队列了,通过 queueBind 方法将Exchange、Routing Key、Queue绑定起来
- Consumer (消费者):用于从队列中获取消息,消费者只需关注队列即可,不需要关注交换机和路由键,消费者可以通过 basicConsume (订阅模式可以从队列中一直持续的自动的接收消息)或者 basicGet (先订阅消息,然后获取单条消息,再然后取消订阅,也就是说 basicGet 一次只能获取一条消息,如果还想再获取下一条还要再次调用basicGet)来从队列中获取消息
- vhost(虚拟主机): RabbitMQ 通过虚拟主机(virtual host)来分发消息, 拥有自己独立的权限控制,不同的 vhost 之间是隔离的,单独的。vhost 是权限控制的基本单位,用户只能访问与之绑定的 vhost,默认 vhost:”/” ,默认用户”guest” 密码“guest”,来访问默认的vhost。
三,安装
这里我采用 docker 容器化引擎部署,使用 docker-compose 命令行工具,定义和运行应用程序中的各个服务:
docker-compose.yml
version: '3'
services:
rabbitmq:
image: rabbitmq:management-alpine
container_name: rabbitmq
environment:
# 用户名
- RABBITMQ_DEFAULT_USER=admin
# 密码
- RABBITMQ_DEFAULT_PASS=admin
# restart: always
volumes:
- ./data-in-docker:/var/lib/rabbitmq/
ports:
- "15672:15672"
- "5672:5672"
当前的 latest 版本为 RABBITMQ_VERSION=3.7.17
docker-compose up -d
等待下载完镜像并启动后,打开 rabbitMQ 的 web 控制台 http://localhost:15672/
本人部署在虚拟机中,所以使用本虚拟机 ip 192.168.159.129
使用我们设置的用户名和密码即可登录进去
为您推荐与 rabbitmq 相关的帖子:
- RabbitMQ 学习笔记 -- 02 一个 HelloWorld
- RabbitMQ 学习笔记 -- 03 多消费者
- RabbitMQ 学习笔记 -- 04 扇形交换机
- RabbitMQ 学习笔记 -- 05 路由模式
- RabbitMQ 学习笔记 -- 06 Topic 交换机
- RabbitMQ 学习笔记 -- 07 初探@RabbitListener
- RabbitMQ 学习笔记 -- 08 RabbitTemplate 及消息序列化
- RabbitMQ 学习笔记 -- 09 RabbitMQ 的持久化
- RabbitMQ 学习笔记 -- 10 RabbitMQ 消费者确认和发布者确认
- RabbitMQ 学习笔记 -- 11 RabbitMQ 死信队列
- RabbitMQ 消息队列模型使用介绍
- RabbitMQ 3.11.0 已发布
- RabbitMQ 3.11.6 发布
- RabbitMQ 3.11.8 已发布,AMQP 开源实现
- RabbitMQ 3.11.13 已发布,AMQP 开源实现
- RabbitMQ 3.11.14 已发布,AMQP 开源实现
暂无回复。