RabbitMQ
安装
# 安装 erlang
brew install erlang
# 下载二进制文件
https://www.rabbitmq.com/download.html
协议
RabbitMQ
使用 AMQP
协议
AMQP
(Advanced Message Queuing Protocol) 高级消息队列协议
关键词
- 消息(message)
- 发布者(publisher)或者叫 生产者(producer)
- 交换机(exchange)
- 队列(queue)
- 订阅者(subscriber)或者叫 消费者(consumer)
交换机类型
- Direct exchange(直连交换机)amq.direct 精确匹配队列
- Fanout exchange(扇型交换机)amq.fanout 广播
- Topic exchange(主题交换机)amq.topic 模糊匹配队列 路由键一般用.隔开 *表示模糊匹配一个单词 #表示模糊匹配任意数量(零个或多个)单词
- Headers exchange(头交换机) amq.headers 根据头信息匹配队列
流程
消息(message)被发布者(publisher)发送给交换机(exchange),交换机常常被比喻成邮局或者邮箱。然后交换机将收到的消息根据路由规则分发给绑定的队列(queue)。最后AMQP代理会将消息投递给订阅了此队列的消费者,或者消费者按照需求自行获取
命令行
- rabbitmq-server -detached 启动rabbitmq
- rabbitmqctl stop 关闭rabbitmq
- rabbitmqctl status 查看状态
- rabbitmqctl list_queues 查看Rabbitmq队列,并列出多少消息存在其中
- rabbitmqctl list_exchanges 列出服务器上所有的交换器
- rabbitmqctl list_bindings 列出所有现存的绑定
- rabbitmq-plugins list 查看插件列表
- rabbitmq-plugins enable rabbitmq_management (启用后台管理系统插件)
- rabbitmq-plugins disable rabbitmq_management (禁用后台管理系统插件)
- rabbitmqctl 查看所有命令
配置
默认可以不配置,路径 etc/rabbitmq/rabbitmq.conf
# 配置示例
listeners.tcp.local = 127.0.0.1:5672
heartbeat = 60
frame_max = 131072
channel_max = 128
vm_memory_high_watermark.relative = 0.4
vm_memory_high_watermark_paging_ratio = 0.5
disk_free_limit.absolute = 50000
log.console = false
log.console.level = info
log.exchange = false
log.exchange.level = info