一、安装RabbitMQ
1、概述: RabbitMQ是一个开源的遵循 AMQP协议实现的基于 Erlang语言编写,一般地,需要先安装部署Erlang环境再安装RabbitMQ环境。但在docker中,Erlang环境已经被docker自动安装,我们只需要简单几步操作即可完成RabbitMQ环境地安装+Web页面管理。消息队列是异步处理,降低耦合度,流量削峰。
2、开放端口:请在服务器上开放相应地安全组(端口):15672(页面管理 端口)、5672(client端通信口)、25672(server间内部通信口)、61613、1883
#开放指定端口号命令
firewall-cmd --zone=public --add-port=1935/tcp --permanent
命令含义:
--zone #作用域
--add-port=1935/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
3、先安装docker(移步docker安装教程),然后执行以下命令,docker容器便会自动拉取RabbitMQ镜像并创建容器。
docker run -d --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management
安装完成后,输入http://ip:15672/,则可以看到RabbitMQ管理界面:
二、RabbitMQ的五种工作模式
1、消息推送到接收的流程图:
1、简单队列:一个生产者对应一个消费者。
2、work模式:一个生产者对应多个消费者,但是一条消息只能有一个消费者获得消息,轮询分发就是将消息队列中的消息,依次发送给所有消费者。一个消息只能被一个消费者获取。
3、发布/订阅模式(fanoutExchange):一个消费者将消息首先发送到交换机,交换机绑定到多个队列,然后被监听该队列的消费者所接收消费。如果没有队列绑定交换机,则消息丢失。
4、路由模式(DirectExchange):生产者将消息发送到direct交换机,在绑定队列和交换机的时候有一个路由key,生产者发送的消息会指定一个路由key,那么消息只会发送到相应key相同的队列中,接着监听该队列的消费者消费消息。也就是让消费者有选择性的接收消息。
5、主题模式(TopicExchange):路由模式是根据routingkey进行完整的匹配,而这里的通配符模式就是模糊匹配。与路由模式类似,但主题模式是一种模糊的匹配方式。
五种模式可以分为三类:
生产者,消息队列,一个消费者。
生产者,消息队列,多个消费者。
生产者,交换机,多个消息对列,多个消费者。
着中介绍最常用的Fanout交换机和Direct交换机
Fanout Exchange:扇形交换机。
不处理路由键,只需要简单的将队列绑定到交换机上。
发送到交换机的消息都会被转发到该交换机绑定的所有队列上
Fanout交换机转发消息是最快的。
Fanout Exchange交换机可以简单的理解为广播站。
上面几句话,在生活中有个很常见的示例:在大学中,我们知道每天都会有广播站放出美妙的音乐。广播站是面向全校所有师生的,所有它的消息转发的是最快的。
Direct exchange:直连交换机。
定义:根据路由键(routingkey)需要完全匹配上才可以。会把消息路由到那些bingding key与routing key完全匹配的队列中。Rabbit mq默认的路由就是这种。
单个绑定示意图:
说明:
我们可以看到有三个routingkey:orange、black、green.如果生产者P发送消息的key是orange(需要完全匹配的)那么将会被路由的Q1这个消费者上。如果发送的是black或者是green的时候,将会被路由到Q2上面。
多个绑定示意图:
说明:
将相同的key绑定在不同的队列中。当生产者P发送消息key是black的时候,Q1和Q2都会被接收到
标签:队列,RabbitMQ,交换机,概述,消息,key,安装,路由 From: https://www.cnblogs.com/coolsheep/p/16829023.html