RabbitMQ详解(一):Linux安装

这篇具有很好参考价值的文章主要介绍了RabbitMQ详解(一):Linux安装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

消息队列概念

消息队列是在消息的传输过程中保存消息的容器。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。

常见的消息队列

  • RabbitMQ

    基于AMQP(高级消息队列协议)基础上完成的,erlang语言开发的企业消息系统,是当前最主流的消息中间件之一,下文我们会详细介绍这一种。

  • ActiveMQ

    基于JMS 规范,Apache软件基金会所研发的开源产品,用 Java 语言实现

  • RocketMQ

    基于JMS 规范,阿里公司的开源产品,用 Java 语言实现

  • Kafka

    阿里公司的开源产品,一种高吞吐量的分布式发布订阅消息系统

持久化对比

简单来说就是将数据存入磁盘,而不是存在内存中随服务器重启断开而消失,使数据能够永久保存

ActiveMQ RabbitMQ Kafka RocketMQ
文件存储 支持 支持 支持 支持
数据库 支持 / / /

分发策略对比

MQ消息队列有如下几个角色

  • 生产者
  • 存储消息
  • 消费者

那么生产者生成消息以后,MQ进行存储,消费者是如何获取消息的呢?

​ 一般获取数据的方式无外乎推(push)或者拉(pull)两种方式,典型的git就有推拉机制,我们发送的http请求就是一种典型的拉取数据库数据返回的过 程。而消息队列MQ是一种推送的过程,而这些推机制会适用到很多的业务场景也有很多对应推拉机制策略。

ActiveMQ RabbitMQ RocketMQ Kafka
发布订阅 支持 支持 支持 支持
轮询分发 支持 支持 / 支持
公平分发 / 支持 / 支持
重发 支持 支持 支持 /
消息拉取 / 支持 支持 支持

RabbitMQ概念

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。

AMQP协议

AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。Erlang中的实现有RabbitMQ等。

是在tcp/ip协议基础之上构建的一种约定成俗的规范和机制,它使得遵从该规范的客户端应用和消息中间件服务器的全功能互操作成为可能.

面试题:为什么消息中间件不直接使用http协议呢?

  • 一是因为http协议的请求和响应报文头都是很复杂的,对于一个消息来说不需要这么复杂,只需要负责数据的传递,存储和分发即可,一定要追求的是高性能
  • 二是大部分情况下http协议都是短链接,这就导致数据可能会丢失,而消息中间件是长期获取消息的过程,出现问题就要对数据进行持久化,目的就是为了保障数据的稳定运行

安装

官网地址: https://www.rabbitmq.com/

下载地址:https://www.rabbitmq.com/download.html

版本兼容

官方版本兼容比较地址:https://www.rabbitmq.com/which-erlang.html

linux安装消息队列,中间件,java-rabbitmq,rabbitmq,linux

一定要注意版本问题 rabbitmq+erlang+centos的版本得都得考虑

centos7用erlang23版本或者23以下版本,centos8用erlang24版本

查看系统版本号

[root@hecs-66166 ~]# lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description:    CentOS Linux release 7.9.2009 (Core)
Release:        7.9.2009
Codename:       Core

Erlang安装

  • RabbitMQ是采用Erlang语言开发的,所以系统环境必须提供Erlang环境,第一步就是安装Erlang。

  • 下载地址: https://www.erlang-solutions.com/downloads/ ,这个下载速度非常的慢,可以从我的网盘地址 直接下载

  • 将下载的安装包上传到/usr/rabbitmq包下,需要新建目录rabbitmq
    linux安装消息队列,中间件,java-rabbitmq,rabbitmq,linux

  • 安装命令

    rpm -ivh erlang-21.3-1.el7.x86_64.rpm
    

    linux安装消息队列,中间件,java-rabbitmq,rabbitmq,linux

  • 查看版本

    erl -v
    

    linux安装消息队列,中间件,java-rabbitmq,rabbitmq,linux

socat安装

  • RabbitMQ需要的依赖:socat和logrotate,logrotate操作系统中已经存在了,只需要安装socat就
    可以了。

  • 安装命令

    yum install -y socat
    

    linux安装消息队列,中间件,java-rabbitmq,rabbitmq,linux

RabbitMQ安装

  • 下载地址: https://www.rabbitmq.com/download.html,这个下载速度也是非常的慢,可以从我的网盘地址 直接下载

  • 将下载的安装包上传到/usr/rabbitmq包下

    linux安装消息队列,中间件,java-rabbitmq,rabbitmq,linux

  • 安装命令

    rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm
    

    linux安装消息队列,中间件,java-rabbitmq,rabbitmq,linux

  • 启动服务

    [root@hecs-66166 rabbitmq]# systemctl start rabbitmq-server
    [root@hecs-66166 rabbitmq]# systemctl status rabbitmq-server
    ● rabbitmq-server.service - RabbitMQ broker
       Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)
       Active: active (running) since Wed 2023-05-10 02:19:55 CST; 11s ago
     Main PID: 10260 (beam.smp)
       Status: "Initialized"
       CGroup: /system.slice/rabbitmq-server.service
               ├─10260 /usr/lib64/erlang/erts-10.3/bin/beam.smp -W w -K true -A 64 -MBas ageffcbf -MHas...
               ├─10365 erl_child_setup 32768
               ├─10390 /usr/lib64/erlang/erts-10.3/bin/epmd -daemon
               ├─10413 inet_gethost 4
               └─10414 inet_gethost 4
    
    May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: ##########  Licensed under the MPL 2.0. Websi...com
    May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: Doc guides: https://rabbitmq.com/documentation.html
    May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: Support:    https://rabbitmq.com/contact.html
    May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: Tutorials:  https://rabbitmq.com/getstarted.html
    May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: Monitoring: https://rabbitmq.com/monitoring.html
    May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: Logs: /var/log/rabbitmq/rabbit@hecs-66166.log
    May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: /var/log/rabbitmq/rabbit@hecs-66166_upgrade.log
    May 10 02:19:53 hecs-66166 rabbitmq-server[10260]: Config file(s): (none)
    May 10 02:19:55 hecs-66166 rabbitmq-server[10260]: Starting broker... completed with 0 plugins.
    May 10 02:19:55 hecs-66166 systemd[1]: Started RabbitMQ broker.
    Hint: Some lines were ellipsized, use -l to show in full.
    
  • 命令

    # 启动服务
    > systemctl start rabbitmq-server
    # 查看服务状态
    > systemctl status rabbitmq-server
    # 停止服务
    > systemctl stop rabbitmq-server
    # 开机启动服务
    > systemctl enable rabbitmq-server
    

相关端口

  • 5672:RabbitMQ的通讯端口
  • 25672:RabbitMQ的节点间的CLI通讯端口是
  • 15672:RabbitMQ HTTP_API的端口,管理员用户才能访问,用于管理RabbitMQ,需要启动Management插件。
  • 1883,8883:MQTT插件启动时的端口。
  • 61613、61614:STOMP客户端插件启用的时候的端口。
  • 15674、15675:基于webscoket的STOMP端口和MOTT端口

图形化管理界面及授权操作

安装

  • 安装命令

    rabbitmq-plugins enable rabbitmq_management
    

    linux安装消息队列,中间件,java-rabbitmq,rabbitmq,linux

  • 重启mq服务

    systemctl restart rabbitmq-server
    

    一定要记住,在对应服务器(阿里云,腾讯云等)的安全组中开放15672的端口,如果有安装的宝塔同样也要开放15672端口

  • 浏览器访问http://ip:15672/

    linux安装消息队列,中间件,java-rabbitmq,rabbitmq,linux

授权账号和密码

  • 新增用户

    rabbitmqctl add_user admin admin
    
  • 设置用户角色

    用户级别:
    1、administrator 可以登录控制台、查看所有信息、可以对rabbitmq进行管理
    2、monitoring 监控者 登录控制台,查看所有信息
    3、policymaker 策略制定者 登录控制台,指定策略
    4、managment 普通管理员 登录控制台
    
    [root@hecs-66166 rabbitmq]# rabbitmqctl set_user_tags admin administrator
    Setting tags for user "admin" to [administrator] ...
    
  • 为用户设置权限

    rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
    
  • 登录访问

    linux安装消息队列,中间件,java-rabbitmq,rabbitmq,linux

  • 命令小结

    #添加用户
    rabbitmqctl add_user 账号 密码
    #设置用户操作角色
    rabbitmqctl set_user_tags 账号 administrator
    #修改用户密码
    rabbitmqctl change_password Username Newpassword 修改密码
    #删除用户
    rabbitmqctl delete_user Username
    #查看用户清单
    rabbitmqctl list_users 查看用户
    #设置用户资源权限
    rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*" 
    

用户角色分类

  • none

    什么也干不了,也无法登陆到图形化界面, 基本也没有用

  • management 普通管理员

    相当于个人中心,只查看自己的相关节点信息

  • policymaker 策略制定者

    在个人中心基础上,可以管理 (创建、删除) 自己的虚拟机节点和参数信息

  • monitoring 监控者

    和管理员一样,除了看自己的还是看别人的,但是只能看,不能操作别人的

  • Administrator 超级管理员

    顶级管理员,可登陆控制台、查看所有信息、可对 rabbitmq进行管理 (全部)

页面介绍

  • Overview

    主要展示的是MQ的概要信息 , 如消息的数量,ConnectionChannelExchangeQueueConsumer的数量

    linux安装消息队列,中间件,java-rabbitmq,rabbitmq,linux

  • connections

    查看生产者或消费者与RabbitMQ建立连接后的信息

    linux安装消息队列,中间件,java-rabbitmq,rabbitmq,linux

  • channels

    通道,建立连接后,会形成通道,消息的投递获取依赖通道

    linux安装消息队列,中间件,java-rabbitmq,rabbitmq,linux

  • Exchanges

    交换机,用来实现消息的路由,主要展示的是当前虚拟主机下的交换器,也可以在此添加一个新的交换器, 并且配置对应的交换器的规则属性

    linux安装消息队列,中间件,java-rabbitmq,rabbitmq,linux

  • Queues

    队列,即消息队列,消息存放在队列中,等待消费,消费后被移除队列

    linux安装消息队列,中间件,java-rabbitmq,rabbitmq,linux

  • Admin

    系统管理,展示的是用户管理的信息, 包含用户列表的展示,添加用户,添加虚拟主机等信息

    linux安装消息队列,中间件,java-rabbitmq,rabbitmq,linux文章来源地址https://www.toymoban.com/news/detail-643350.html

到了这里,关于RabbitMQ详解(一):Linux安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 消息队列中间件(二)- RabbitMQ(一)

    接收,存储,转发消息 生产者 交换机 队列 消费者 简单模式 工作模式 发布 路由模式 主题模式 发布订阅模式 Broker 接收和分发消息的应用 Virtual host 虚拟分组 Connection: TCP连接 Channel: 节省连接,每次访问建立一次Connection消耗太大,所以使用信道代替连接 交换机 队列 www.r

    2024年02月11日
    浏览(63)
  • 「中间件」rabbitmq 消息队列基础知识

    RabbitMQ是一个消息队列软件,用于在应用程序之间转发消息。以下是RabbitMQ的基本概念: 消息:RabbitMQ中的消息是传递的基本单位,它由消息头和消息体组成。 队列(Queue):队列是消息的缓冲区,用于存储待处理的消息。 交换器(Exchange):交换器是接收生产者发送的消息并

    2024年02月07日
    浏览(56)
  • 基于golang多消息队列中间件的封装nsq,rabbitmq,kafka

    场景 在创建个人的公共方法库中有这样一个需求,就是不同的项目会用到不同的消息队列中间件,我的思路把所有的消息队列中间件进行封装一个消息队列接口(MQer)有两个方法一个生产一个消费,那么在实例化对象的时候根据配置文件指定当前项目使用的那个消息队列中

    2024年02月14日
    浏览(58)
  • 消息队列中间件,RabbitMQ的使用,死信队列,延迟队列,利用枚举实现队列,交换机,RountKey的声明

    目录 0.交换机种类和区别 1.声明队列和交换机以及RountKey 2.初始化循环绑定 3.声明交换机 4.监听队列 4.1 监听普通队列 4.2监听死信队列  5.削峰填谷的实现 Direct Exchange(直连交换机) : 直连交换机将消息发送到与消息的路由键完全匹配的队列。它是最简单的交换机类型之一。

    2024年04月23日
    浏览(134)
  • 消息中间件RabbitMQ详解

    消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。 消息中间件适用于需要可靠的数据传送的分布式环境。采用消息中间件机制的系统中

    2024年02月16日
    浏览(77)
  • 【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka

    作者简介 前言 博主之前写过一个完整的MQ系列,包含RabbitMQ、RocketMQ、Kafka,从安装使用到底层机制、原理。专栏地址: https://blog.csdn.net/joker_zjn/category_12142400.html?spm=1001.2014.3001.5482 本文是该系列的清单综述,会拉通来聊一下三大MQ的特点和各种适合的场景。 目录 1.概述 1.1.M

    2024年02月09日
    浏览(50)
  • 利用消息中间件RabbitMQ创建队列以及扇出(Fanout)、订阅(Direct)、主题(Topic)交换机来完成消息的发送和监听接收(完整版)

    目录 一、前期项目环境准备 1.1父项目以及子项目 1.2配置pom.xml 1.3配置application.yml 二、扇出(Fanout) 交换机实现消息的发送和接收 2.1编写子项目consumer(消费者,接收消息)的代码实现扇出(Fanout)交换机接收消息 2.1.1consumer子项目结构 2.1.2FanoutConfig类的实现扇出(Fanout)交

    2024年02月05日
    浏览(56)
  • spring cloud 搭建消息中间件 RabbitMQ 环境、Mac/Windows下载安装RabbitMQ、配置RabbitMQ环境变量

    spring boot、spring cloud工程:Mac/Windows下载安装Erlang、RabbitMQ,并配置环境变量。 这里学习如何安装 RabbitMQ,因为远程配置中心的动态更新需要结合 RabbitMQ 来使用。 这里给出自己下载和使用的百度网盘链接:Erlang 版本为25.3.2、RabbitMQ版本为3.12.1 : 链接:百度网盘链接 提取码:

    2024年02月15日
    浏览(67)
  • Linux系统下消息中间件RocketMQ下载、安装、搭建、配置、控制台rocketmq-dashboard的安装保姆级教程 rocketmq ui

    这里给出我使用的 RocketMQ 版本(5.1.3)、RocketMQ-Dashboard 版本的百度网盘链接: 链接:https://pan.baidu.com/s/1HaKBBDGWZ0WKLGgVwIG9pw 提取码:1234 1、注意:有两种资源下载:Source表示源码、Binary是二进制包(我们下载这个):二进制包是已经编译完成后可以直接运行的,源码包是需要

    2024年02月12日
    浏览(57)
  • 消息队列(中间件)

    通信协议: 为了实现客户端和服务器之间的通信来完成的逻辑,基于TCP实现的自定义应用层协议。通过这个协议,完成客户端–服务器远程方法调用。 序列化/反序列化: 通过网络传输对象把对象存储到硬盘上。 序列化:把对象转化为二进制的数据序列,反序列化:把二进制数

    2024年02月07日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包