001 RabbitMQ入门及安装

RabbitMQ入门及安装

1.介绍

  • RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。
  • RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
  • RabbitMQ有四种工作模式,分别为direct(直连),fanout(分发),headers,topic(匹配)

官方文档: https://www.rabbitmq.com/tutorials/tutorial-one-java

1.AMQP和JMS

目前消息队列的主流实现方式有两种,分别为amqpjms协议

  • AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。Erlang中的实现有RabbitMQ等。
  • JMS ,即Java消息服务(Java Message Service)应用程序接口,是Java平台上的专业技术规范,一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。JMS是一种与厂商无关的 API,用来访问收发系统消息,它类似于JDBC(Java Database Connectivity)。这里,JDBC 是可以用来访问许多不同关系数据库的 API,而 JMS 则提供同样与厂商无关的访问方法,以访问消息收发服务。许多厂商都支持 JMS, JMS 使您能够通过消息收发服务(有时称为消息中介程序或路由器)从一个 JMS 客户机向另一个 JMS客户机发送消息。

2.目前主流的消息队列

类型ActiveMQRabbitMQRocketMQkafka
单机吞吐量万级万级十万级,支持高吞吐十万级以上
时效性ms级微秒级ms级延迟在ms级内
可用性基于主从架构实现高可用高,基于主从架构实现高可用非常高,分布式架构非常高,天然分布式
可靠性有较低的概率丢失数据消息不丢失经过参数优化配置,可以做到0丢失经过参数优化配置可以做到0丢失
开发语言javaErlangjavaScala+Java
核心特点MQ领域的功能及其完备基于Erlang开发,所以并发能力强,性能及其好,延时很低MQ功能较为完善,还是分布式的,扩展性好功能较为简单,在大数据领域的实时计算以及日志采集被大规模使用

2.安装

1.Linux安装

官网erlang版本 : 20.3.8.x

官方rabbitMq版本: rabbitmq-server-generic-unix-3.7.14.tar.xz

1.1 安装erlang

1.安装环境

yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel

2.在/usr/local/下创建erlangapp文件夹,创建erlang文件夹

mkdir /usr/local/erlangapp
mkdir /usr/local/erlang

2.将erlang安装包上传到该目录

3.解压

tar -zvxf 

4.进入erlang解压目录中

5.由于是configure.in,所以需要使用autoconf生成配置

./otp_build autoconf 

如果报错autoconf找不到,则需要安装

yum -y install autoconf

6.进入文件,编译安装

./configure
make  
make install  

7.配置环境变量

##进入环境变量配置文件
vim /etc/profile
##在底部添加环境变量
export ERLANG_HOME=/usr/local/lib/erlang  
export PATH=$PATH:$ERLANG_HOME/bin 

8.重新加载环境变量

source /etc/profile

9.输入erl查看

erl
halt().##退出
1.2 RabbitMQ安装

1.创建rabbitMQ文件夹上传

mkdir /usr/local/rabbitmq/

2.解压

 xz -d rabbitmq-server-generic-unix-3.7.14.tar.xz 
 tar -vxf rabbitmq-server-generic-unix-3.7.14.tar 

3.配置环境变量

 vim /etc/profile
## 向文件添加
 export PATH=$PATH:/usr/local/rabbitmq/rabbitmq/sbin
## 重新加载
 source /etc/profile

4.启动

rabbitmq-server -detached   ##【开启rabbitmq服务】
rabbitmqctl status     ## 【查看服务状态】
rabbitmqctl start_app    ## 【启动应用】
rabbitmq-plugins enable rabbitmq_management    ##【开启web管理插件】

5.添加管理员

rabbitmqctl add_user 用户名 密码
rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"   ##配置权限
rabbitmqctl set_user_tags 用户名 administrator   ##修改用户角色,将用户设为管理员
rabbitmqctl list_users    ##查看所有用户
rabbitmqctl delete_user guest    ##删除guest用户

6.启动

#rabbitmq服务默认端口为5672,web管理页面为15672
http://ip:15672

2.Docker安装

拉取镜像

docker pull rabbitmq:3.8.5-management  #management的rabbitMQ是有图形界面的

运行容器

docker run --name rabbitmq  -p 15672:15672 -p 5672:5672 \
--restart=always \
--hostname my-rabbit \
-e RABBITMQ_DEFAULT_VHOST=my_vhost  \
-e RABBITMQ_DEFAULT_USER=root \
-e RABBITMQ_DEFAULT_PASS=root \
-d rabbitmq:3.8.5-management

参数说明

RABBITMQ_DEFAULT_VHOST:虚拟主机
RABBITMQ_DEFAULT_USER:用户名
RABBITMQ_DEFAULT_PASS:密码
hostname:主机名
docker exec -it rabbitmq  rabbitmq-plugins enable rabbitmq_management  #不进入容器开启web管理页面

如果配置了RABBITMQ_DEFAULT_VHOST虚拟主机,springboot集成出现错误

java.net.SocketException: socket closed

则需要检查该虚拟主机是否添加了该用户

如果没有需要的用户则需要点进去添加

在这里插入图片描述

3.核心组件

  • Server: 又称Broker ,接受客户端的连接,实现AMQP实体服务。 安装rabbitmq-server
  • Connection: 连接,应用程序与Broker的网络连接 TCP/IP/ 三次握手和四次挥手
  • Channel: 网络信道,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道,客户端可以建立对各Channel,每个Channel代表一个会话任务。
  • Message: 消息,服务与应用程序之间传送的数据,由Properties和body组成,Properties可是对消息进行修饰,比如消息的优先级,延迟等高级特性,Body则就是消息体的内容。
  • Virtual Host: 虚拟地址,用于进行逻辑隔离,最上层的消息路由,一个虚拟主机理论可以有若干个Exchange和Queue,同一个虚拟主机里面不能有相同名字的Exchange
  • Exchange: 交换机,接受消息,根据路由键发送消息到绑定的队列。(不具备消息存储的能力)
  • Bindings: Exchange和Queue之间的虚拟连接,binding中可以保护多个routing key.
  • Routing key: 是一个路由规则,虚拟机可以用它来确定如何路由一个特定消息。
  • Queue: 队列,也称为Message Queue,消息队列,保存消息并将它们转发给消费者。
  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值