当前位置: 首页 > news >正文

001 RabbitMQ入门及安装

RabbitMQ入门及安装

文章目录

  • RabbitMQ入门及安装
    • 1.介绍
      • 1.AMQP和JMS
      • 2.目前主流的消息队列
    • 2.安装
      • 1.Linux安装
        • 1.1 安装erlang
        • 1.2 RabbitMQ安装
      • 2.Docker安装
    • 3.核心组件

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,消息队列,保存消息并将它们转发给消费者。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 浏览器插件利器--allWebPluginV2.0.0.20-beta版发布
  • 2024 批量下载知乎回答/文章/想法/专栏/视频/收藏夹,导出 excel 和 pdf
  • 运维工程师面试整理-操作系统
  • C++——矩阵无重复行列取数问题
  • 力扣周赛:第415场周赛
  • 探索轻量级语言模型 GPT-4O-mini 的无限可能
  • JavaScript考核详解
  • 基于鸿蒙API10的RTSP播放器(五:拖动底部视频滑轨实现跳转)
  • 深度解析 MintRich 独特的价格曲线机制玩法
  • 【宠物小精灵之收服(待更新)】
  • 【JavaWeb】利用IDEA2024+tomcat10配置web6.0版本搭建JavaWeb开发项目
  • 安全建设当中的冷门知识
  • 简单题27 - 移除元素(Java)20240917
  • 如何在win10Docker安装Mysql数据库?
  • JavaSE - 面向对象编程03
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • Android交互
  • angular2 简述
  • CSS 专业技巧
  • ES6系列(二)变量的解构赋值
  • Flex布局到底解决了什么问题
  • Git学习与使用心得(1)—— 初始化
  • javascript从右向左截取指定位数字符的3种方法
  • Meteor的表单提交:Form
  • node-glob通配符
  • rabbitmq延迟消息示例
  • Ruby 2.x 源代码分析:扩展 概述
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • vue中实现单选
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 百度地图API标注+时间轴组件
  • 百度小程序遇到的问题
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 使用common-codec进行md5加密
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 小程序开发之路(一)
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • #vue3 实现前端下载excel文件模板功能
  • (06)金属布线——为半导体注入生命的连接
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)springboot教学评价 毕业设计 641310
  • (回溯) LeetCode 131. 分割回文串
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (十六)一篇文章学会Java的常用API
  • (四)Android布局类型(线性布局LinearLayout)
  • (五十)第 7 章 图(有向图的十字链表存储)
  • .gitignore
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...