001 RabbitMQ入门及安装

news2024/9/23 1:19:02

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2127071.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式音视频开发:探索多领域的融合与创新

摘要: 本文深入探讨了嵌入式音视频开发领域。从嵌入式系统的基础概念入手,阐述了其在音视频领域的独特地位。详细介绍了嵌入式音视频开发中涉及的硬件组件,如处理器、编解码器、存储设备等。分析了音视频编解码技术,包括常见的编解…

空间数据库概述

空间数据库简介 空间数据库是 地理信息系统 在计算机物理存储介质中存储的,与GIS应用相关的地理空间数据的总和。一般以一系列特定结构的文件形式组织后存储在介质上。 空间数据库的特点 可以存储、处理空间数据相比普通数据库提供更多、更复杂的数据类型以及更多…

[SWPU2019]Web1 超详细教程

老规矩先看源码,没找到啥提示,后面就是登录口对抗 弱口令试了几个不行,就注册了个账户登录进去 可以发布广告,能造成xss,但是没啥用啊感觉 查看广告信息的时候,注意到url当中存在id参数,可能存…

Leetcode面试经典150题-134.加油站

解法都在代码里,不懂就留言或者私信 class Solution {public int canCompleteCircuit(int[] gas, int[] cost) {/**如果只有一个加油站,那它本来就在那个为止,0就是它的编号?但是这只是你的想象,题目有个变态规定,自…

【linux】进程控制(2)

3. 进程等待 1. 是什么 通过系统调用 wait/waitpid 对子进程的退出状态进行检测和回收的功能 2. 为什么 僵尸进程无法杀死,通过进程等待来杀掉它,进而解决内存泄漏的问题 (一)进程等待的方法 a. wait : 代码 wait : 等待任意一…

解锁SAP数据的潜力:SNP Glue与SAP Datasphere的协同作用

在各种文章中,我们研究了客户如何利用SNP Glue与基于云的数据仓库和数据湖相结合,以充分利用其SAP数据。SNP Glue 通过高性能集成解决方案帮助客户解锁 SAP 数据孤岛。例如,可以使用SNP Glue先进的增量捕获(CDC)近乎实…

【Linux 报错】Ubuntu 20.04.5 LTS报错:“E: Unable to locate package xx”

问题描述: 在使用 (Ubuntu 20.04.5 LTS)学习 Linux 时,想要安装 tree 命令,出现下面的报错: rootiZwz9asjf1ddlt6fy1ebqpZ:~# apt install tree Reading package lists... Done Building dependency tree…

蓝光3D扫描仪用于小尺寸精密注塑零件三维检测

在现代精密制造领域,微小型零件的加工和检测依然极具挑战。无论是微型机械零件、电子元器件,汽车注塑件,还是高端医疗器械部件,制造商都必须确保零件尺寸符合设计要求。传统的检测方法已无法满足日益严苛的要求,企业亟…

828华为云征文 | Flexus X的力量,驱动Halo博客在云端飞驰

前言 华为云Flexus云服务器 X实例,以卓越性能与灵活配置,为Halo博客搭建起梦想的云端舞台。在这个828企业上云节节日里,华为云Flexus云服务器 X实例不仅提供了稳定高效的运行环境,更助力Halo博客实现内容创作的无限可能。无论是流…

240912-通过Ollama实现网站知识总结

A. 最终效果 B. 准备工作 报错: USER_AGENT environment variable not set, consider setting it to identify your requests.-CSDN博客 C. 完整代码 # https://coreyclip.github.io/Ollama-Web-Summaries/import os os.environ[USER_AGENT] Mozilla/5.0 (Windows NT 10.…

docker安装部署Canal-监听mysql

文章目录 安装和配置Canal1.开启MySQL主从1.1.开启binlog1.2.设置用户权限 2.安装Canal2.1.创建网络2.3.安装Canal 遇到的问题 安装和配置Canal 下面我们就开启mysql的主从同步机制,让Canal来模拟salve 1.开启MySQL主从 Canal是基于MySQL的主从同步功能&#xff…

cheat:在终端中,在线查询Linux命令

cheat.sh 是一个命令查询网站,在终端中也能够使用。特点是返回简单易懂的代码示例和注解,可以帮助用户快速了解命令的使用方法。 ​​ 1.语法 curl cheat.sh/command2.示例 查询 ls 命令的用法 curl cheat.sh/ls查询 chmod 命令的用法 curl cheat.…

sqlite在Windows环境下安装、使用、node.js连接

sqlite在Windows环境下安装、使用、node.js连接 前言:2024年9月10日 1. 下载安装 sqlite 的安装非常简单 去官网下载对应压缩包 将两个压缩包解压,并将解压出来的文件放在同一目录下 将上面的目录路径配置到环境变量 path 中 2. 执行 sql sqlite …

Day7 | Java框架 | SpringMVC

Day7 | Java框架 | SpringMVC SpringMVC简介SpringMVC 概述入门案例入门案例工作流程分析Controller 加载控制与业务bean加载控制(SpringMVC & Spring)PostMan 请求与响应请求映射路径请求方式(不同类型的请求参数)&#xff1…

基于Linux文件编程实现处理Excel表格的数据

目录 前言 整体的代码框架 如何读取数据文件的数据 read_line 如何处理读取到的数据 process_data 运行结果 总结 前言 本文是基于Linux文件编程的一个小实验,用文件IO来读取Excel表格的数据,处理后写入另一个文件,本文只是对文件IO的…

一些硬件知识(二十二)

二极管(Diode)伏安特性、技术参数和项目中的应用 在正向偏置下,二极管呈现出良好的导电性能,可以允许电流通过;而在反向偏置下,二极管具有很高的阻断能力,几乎不允许电流通过。这是由构成二极管…

CC工具箱使用指南:【字段计算器学习版】

一、简介 这个工具算是Pro自带的字段计算器的扩展版。 工具预制了几种计算模式,通过可视化操作,帮你自动生成代码。 生成代码后,可以直接运行,也可以将代码复制到Pro自带的字段计算器中进行计算。 总之,这是给不会…

【CanMV K230 AI视觉】 人体检测

【CanMV K230 AI视觉】 人体检测 人体检测 动态测试效果可以去下面网站自己看。 B站视频链接:已做成合集 抖音链接:已做成合集 人体检测 人体检测是判断摄像头画面中有无出现人体,常用于人体数量检测,人流量监控以及安防监控等。…

研1日记9

1.理解conv1d和conv2d a. 1和2处理的数据不同,1维数据和图像 b. 例如x输入形状为(32,19,512)时,卷积公式是针对512的,而19应该变换为参数中指定的输出通道。 2.“SE块”(Squeeze-and-Excitation Block)它可以帮助模…

STM32-HAL库开发快速入门

注:本文主要记录一下STM32CubeMX软件的使用流程,记录内容以STM32外设(中断、I2C、USART、SPI等配置)在STM32CubeMX中的设置为主,对驱动代码编写不做记录,所以阅读本文最好有标准库开发经验。除第2节外,使用的都是韦东山…