RabbitMQ

1. RabbitMQ安装

(1)什么是RabbitMQ?

MQ全称为Message Queue,消息队列是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用出去了接收和发送应用程序同时执行的要求。

(2)什么是Erlang?

Erlang是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。

(3)如何在Linux环境中安装RabbitMQ?

1、安装 erlang
1.1 安装准备,下载安装文件
wget
https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.r
pm
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
修改 primary.xml.gz 的 的 sha 的加密值
cd /var/cache/yum/x86_64/6/erlang-solutions
sha1sum primary.xml.gz
vim repomd.xml
修改

结果为 sha1sum 命令结果
2、安装 erlang
yum install erlang
3、安装完成后可以用 erl 命令查看是否安装成功
erl -version
4、安装 RabbitMQ Server
4.1 安装准备,下载 RabbitMQ Server
wget
http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.1/rabbitmq-
server-3.5.1-1.noarch.rpm
4.2 安装 RabbitMQ Server
rpm --import
http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
yum install rabbitmq-server-3.5.1-1.noarch.rpm
5、 启动 RabbitMQ
5.1 配置为守护进程随系统自动启动,root 权限下执行:
chkconfig rabbitmq-server on
5.2 启动 rabbitMQ 服务
/sbin/service rabbitmq-server start
6、 安装 Web 管理界面插件
6.1 安装命令
rabbitmq-plugins enable rabbitmq_management
6.2 安装成功后会显示如下内容
The following plugins have been enabled:
mochiweb
webmachine
rabbitmq_web_dispatch
amqp_client
rabbitmq_management_agent
rabbitmq_management
Plugin configuration has changed. Restart RabbitMQ for changes
to take effect.
7、 设置 RabbitMQ 远程 ip 登录
个 这里我们以创建个 oldlu 帐号,密码 123456 为例,创建一个账号并支持远程 ip 访问。
7.1 创建账号
rabbitmqctl add_user oldlu 123456
7.2 设置用户角色
rabbitmqctl set_user_tags oldlu administrator
7.3 设置用户权限
rabbitmqctl set_permissions -p “/” oldlu “." ".” “.*”
7.4 设置完成后可以查看当前用户和角色( 需要开启服务)
rabbitmqctl list_users
浏览器输入:serverip:15672 。其中 serverip 是 是 RabbitMQ-Server 所在主机的 ip

2.消息队列基础讲解

(1)什么是Provider?

消息提供者

(2)什么是Consumer?

消息的消费者

(3)什么是队列?

队列就像存放了商品的仓库或者商店,是生产商品的工厂和购买商品的用户之间的中转站

(4)队列里存储了什么?

在这里插入图片描述

(5)队列和应用程序的关系是什么?

在这里插入图片描述

3.消息队列入门案例-环境搭建

(1)如果现在项目中使用RabbitMQ需要添加Spring Boot的什么启动器?

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

(2)在项目的全局配置文件中需要配置哪些内容?

spring.rabbitmq.host=192.168.6.44
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=admin

4.消息队列入门案例-编码

(1)创建队列对象的名称是什么?

Queue

(2)能够发送消息的方法名称是什么?

rabbitTemplate.convertAndSend()

(3)监听队列的注解名称是什么?

@RabbitListene

5.RabbitMQ原理讲解

(1)什么是交换器?

交换器。用来接收生产者发送的消息并将这些消息路由给服务器中的队列。

(2)常见的交换器类型有哪些?

1)Direct 2)topic 3)fanout

(3)什么是Routing-key?

路由键:rabbitmq决定消息投到那个队列

(4)什么是Channel?

信道:

在这里插入图片描述

(5)交换器与队列的关系是什么?

交换器是通过路由键和队列绑定在一起的,如果消息拥有的路由键跟队列和交换器的 路由键匹配,那么消息就会被路由到该绑定的队列中。 也就是说,消息到队列的过程中,消息首先会经过交换器,接下来交换器在通过路由 键匹配分发消息到具体的队列中。 路由键可以理解为匹配的规则。

(6)RabbitMQ为什么需要信道?为什么不使用TCP协议直接通信

1)TCP 的创建和销毁开销特别大。创建需要 3 次握手,销毁需要 4 次分手。
2)如果不用信道,那应用程序就会以 TCP 链接 Rabbit,高峰时每秒成千上万条链接 会造成资源巨大的浪费,而且操作系统每秒处理 TCP 链接数也是有限制的,必定造成性能 瓶颈。
3) 信道的原理是一条线程一条通道,多条线程多条通道同用一条 TCP 链接。一条 TCP 链接可以容纳无限的信道,即使每秒成千上万的请求也不会成为性能的瓶颈

6.Direct交换器-搭建环境

(1)什么是Direct交换器?

将指定的消息传输给指定的队列
在这里插入图片描述

(2)如何在全局配置文件中配置交换器名称?

在这里插入图片描述

(3)如何在全局配置文件中配置队列名称?

在这里插入图片描述

(4)如何在全局配置文件中配置路由键?

在这里插入图片描述

7.Direct交换器-编写消费者

(1)@RabbitHandler的作用是什么?

@RabbitListener 标注在类上面表示当有收到消息的时候,就交给 @RabbitHandler 的方法处理

(2)@RabbitListener注解中的bindings属性的作用是什么?

绑定队列

(3)@QueueBinding注解中的value属性的作用是什么?

绑定队列的名称

(4)@QueueBinding注解中的exchange属性的作用是什么?

指定交换机

(5)@QueueBinding注解中的key属性的作用是什么?

指定路由键

(6)@Exchange注解中的value属性的作用是什么?

交换机的名称

(7)@Exchange注解中的type属性的作用是什么?

指定交换机的类型

8.Direct交换器-编写生产者

(1)AmqpTemplate中的converteAndSend(arg0,arg1,arg2)中的三个参数分别表示什么含义?

1)交换机
2)路由键
3)发送的消息

9.Topic交换器-搭建环境

(1)什么是Topic交换器?

解决多对多的信息的处理,通过规则将一类的消息放在一起
在这里插入图片描述

10.Topic交换器-编写消费者

(1)如何在消息消费者的注解中指定交换器与路由规则?

通过注解
@RabbitListener(
        bindings = @QueueBinding(
                value =@Queue(value = "${mq.config.queue.error}",autoDelete = "true"),
                exchange = @Exchange(value = "${mq.config.exchange}",type = ExchangeTypes.DIRECT),
                key = "${mq.config.queue.error.routing.key}"
        )

11.Fanout交换器-搭建环境

(1)什么是Fanout交换器?

通过交换器将提供者发布信息,广播到消息队列中

12.什么是服务注册中心

(1)什么是服务的注册中心?

服务注册中心是服务实现服务化管理的核心组件,类似于目录服务的作用,主要用来存储服务信息,譬如提供者 url 串、路由信息等。服务注册中心是 SOA 架构中最基础的设施

(2)服务的注册中心的作用是什么?

1)服务的注册
2)服务的发现

(3)常见的注册中心有哪些?

1)dubbo zookeeper
2)Springcloud Eureka

13.注册中心解决了什么问题

(1)注册中心主要解决了什么问题?

1)服务管理
2)服务依赖关系的管理

14.什么是Eureka注册中心

(1)什么是Eureka注册中心?

是Netflix开发的服务发现组件,基于rest的服务,springcloud将他集成在spring-cloud-Netflix中,用于spring-cloud的服务的注册发现,以及负载均衡和故障转移

(2)Eureka注册中心有几种角色?每种角色的代表什么?

1)EureKa server :提供get register等接口用于服务的注册和发现
2)Application service:将服务实例添加到eureka中
3)application client:通过eureka服务列表获取服务列表

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值