RabbitMQ入门

RabbitMQ入门

MQ的优势跟劣势

优势

  1. 削峰填谷
  2. 异步提速
  3. 应用解耦

劣势

  1. 消息一致性
  2. 系统复杂性提高
  3. 系统可用性降低

安装RabbitMQ

  1. 安装依赖
yum install gcc

yum install socat
  1. 安装Erlang
    在这里插入图片描述
wget https://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/openssl-libs-1.0.2k-19.el7.x86_64.rpm --no-check-certificate

rpm -ivh openssl-libs-1.0.2k-19.el7.x86_64.rpm --force

rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm
  1. 安装RabbitMQ
rpm -ivh rabbitmq-server-3.7.17-1.el7.noarch.rpm
  1. 开启管理界面及配置
# 开启管理界面
rabbitmq-plugins enable rabbitmq_management

# 配置远程可使用guest登录mq
cd /usr/share/doc/rabbitmq-server-3.7.17

cp rabbitmq.config.example /etc/rabbitmq/rabbitmq.config

# 修改配置文件
vi /etc/rabbitmq/rabbitmq.config

在这里插入图片描述

  1. 启动
systemctl start rabbitmq-server
  1. 配置虚拟主机及用户

RabbitMQ在安装好后,可以访问http://ip地址:15672 ;其自带了guest/guest的用户名和密码。

在这里插入图片描述

RabbitMQ相关概念

  1. Broker
    接收和分发消息的应用,RabbitMQ Server就是Message Broker
  2. VirtualHost
    出于多租户和安全因素设计的,把AMQP的基本组件划分到一个虚拟分组中,类似于网络中的namespace的概念,当多个不同的用户使用同一个RabbitMQ Server提供的服务时,可以划分出多个vhost,每个用户在自己的vhost创建exchange/queue
  3. Connection
    publisher/consumer和broker之间的TCP连接
  4. Channel
    如果每一次访问RabbitMQ都建立一个Connection,在消息量打的时候建立TCP Connection的开销将是巨大的,效率也较低。Channel是在connection内部建立的逻辑连接,如果应用程序支持多线程,通常每个thread创建的单独的channel进行通讯。Channel作为轻量级的Connection极大的减少了操作系统建立TCP connection的开销。
  5. Exchange
    message到达broker的第一站,根据分发规则,匹配查询表中的routing key,分发消息到雀跃中去,常用的类型有:direct(point-to-point),topic(publish-subscribe),fanout(multicast)
  6. Queue
    消息最终被送到这里等待Consumer取走
  7. Binding
    exchange跟Queue之间的虚拟连接,binding中可以包含routing key。Bingding信息被保存到exchange中的查询表中,用于message的分发依据。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

RabbitMQ的工作模式

  1. 简单模式
    在这里插入图片描述

在上图的模型中,有以下概念:

P:生产者,也就是要发送消息的程序
C:消费者:消息的接受者,会一直等待消息到来。
queue:消息队列,图中红色部分。类似一个邮箱,可以缓存消息;生产者向其中投递消息,消费者从其中取出消息。

  1. work Queues
    在这里插入图片描述

Work Queues与入门程序的简单模式相比,多了一个或一些消费端,多个消费端共同消费同一个队列中的消息。

应用场景:对于 任务过重或任务较多情况使用工作队列可以提高任务处理的速度。

在一个队列中如果有多个消费者,那么消费者之间对于同一个消息的关系是竞争的关系,消息机制叫轮询分发(自动确认模式)和公平分发(需开启手动确认模式)。

  1. Publish/Subscribe发布订阅模式
    在这里插入图片描述

P:生产者,也就是要发送消息的程序,但是不再发送到队列中,而是发给X(交换机)

C:消费者,消息的接受者,会一直等待消息到来。

Queue:消息队列,接收消息、缓存消息。

Exchange:交换机,图中的X。一方面,接收生产者发送的消息。另一方面,知道如何处理消息,例如递交给某个特别队列、递交给所有队列、或是将消息丢弃。到底如何操作,取决于Exchange的类型。Exchange有常见以下3种类型:

  • Fanout:广播,将消息交给所有绑定到交换机的队列

  • Direct:定向,把消息交给符合指定routing key 的队列

  • Topic:通配符,把消息交给符合routing pattern(路由模式) 的队列

交换机需要与队列进行绑定,绑定之后;一个消息可以被多个消费者都收到。

  1. Routing路由模式
    在这里插入图片描述

P:生产者,向Exchange发送消息,发送消息时,会指定一个routing key。

X:Exchange(交换机),接收生产者的消息,然后把消息递交给 与routing key完全匹配的队列

C1:消费者,其所在队列指定了需要routing key 为 error 的消息

C2:消费者,其所在队列指定了需要routing key 为 info、error、warning 的消息

Routing模式要求队列在绑定交换机时要指定routing key,消息会转发到符合routing key的队列。

  1. Topic主题模式
    在这里插入图片描述

Routingkey 一般都是有一个或多个单词组成,多个单词之间以”.”分割,例如: item.insert

通配符规则:

#:匹配一个或多个词

*:匹配不多不少恰好1个词

Topic主题模式可以实现 Publish/Subscribe发布与订阅模式 和 Routing路由模式 的功能;只是Topic在配置routing key 的时候可以使用通配符,显得更加灵活。

  1. RPC远程调用模式
    在这里插入图片描述

1、简单模式 HelloWorld

一个生产者、一个消费者,不需要设置交换机(使用默认的交换机)

2、工作队列模式 Work Queue

一个生产者、多个消费者(竞争关系),不需要设置交换机(使用默认的交换机)

3、发布订阅模式 Publish/subscribe

需要设置类型为fanout的交换机,并且交换机和队列进行绑定,当发送消息到交换机后,交换机会将消息发送到绑定的队列

4、路由模式 Routing

需要设置类型为direct的交换机,交换机和队列进行绑定,并且指定routing key,当发送消息到交换机后,交换机会根据routing key将消息发送到对应的队列

5、通配符模式 Topic

需要设置类型为topic的交换机,交换机和队列进行绑定,并且指定通配符方式的routing key,当发送消息到交换机后,交换机会根据routing key将消息发送到对应的队列
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shang443

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值