栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

RabbitMQ入门

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将消息发送到对应的队列
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/698847.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号