欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

rabbitmq简介及安装

程序员文章站 2022-07-12 13:15:43
...

RabbitMQ是目前主流的几个消息中间件之一, 了解RabbitMQ对于开发人员来说也很有必要

什么是消息队列,消息队列能干什么?
消息队列中间件是利用消息传递机制将消息在不同接口,不同平台之间传递,提供消息传递和消息排队
消息队列能够实现消息通信,二能够通过异步的方式实现调用的解耦,较少IO阻塞

消息队列一般有两种传递模式:

  1. 点对点传递P2P
  2. 发布订阅模式 pub/sub
    消息队列的存在使得异步通信,异步数据交换,异步调用,接口松耦合提供方便

提供消息的中间件(简称MOM, message oriented middleware)

消息队列也特别适合分布式环境, 实现系统的调用

总结消息中间件的作用:

  1. 解耦 能够独立的扩展或修改消息两边的处理过程
  2. 冗余 数据处理过程可能失败,消息中间件可以把数据持久化,增加确认机制,确保消息处理完成, 可以规避数据丢失的风险(这里的数据放丢失
    是指向消息队列提交了的数据,如果在向消息队列发送过程中发生错误或网络异常,则无法确保数据不被丢失, 只有通过生产者重试等机制进行处理)
  3. 扩展性 消息队列解耦, 那么增加消息生产者与消息处理者是相对容易的
  4. 削峰 在流量暴增的时候,应用能够将用户请求发送到消息队列进行缓冲, 排队进行处理, 这样可以保证后端不会被大流量压垮
  5. 可恢复性 消息持久化,可以保证消息不被丢失
  6. 缓冲 可以控制和优化数据流的速度
  7. 异步通信 允许消息放入消息队列进行缓冲,进行异步处理

rabbitmq实现了AMQP应用协议标准, rabbitmq使用协议可以对队列(queue)和交换机(exchange)资源进行配置
rabbitMq 使用erlang语言进行编写,但是在学习rabbitmq的基本功能知识完全不需要学习erlang, Erlang是一种通用的并发程序设计语言

rabbitmq的特点:

  1. 可靠性 (持久化, 传输确认,发布确认等)
  2. 灵活的路由 通过交换机来路由消息 可以实现自己的交换机,路由到不同的消息队列中
  3. 扩展性
  4. 高可用 rabbitmq支持集群,并提供镜像队列
  5. 多种协议支持 默认支持AMQP ,但也支持MQTT, DTOMP等
  6. 多语言客户端
  7. 插件机制 可以实现插件扩展,用户可以编写自己的插件

rabbitmq安装:

一. yum安装

简单, 但是版本较低

yum install erlang -y

yum install rabbitmq-server  -y
启动服务
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
# 查看
systemctl status rabbitmq-server.service

二. 包安装

需要下载包,速度可能慢一些,但是版本可以自行选择

在安装前,需参考官网决定要安装的版本,以及依赖的erlang最低版本

  1. 安装erlang
# 下载
wget https://github.com/rabbitmq/erlang-rpm/releases/download/v22.0.1/erlang-22.0.1-1.el7.x86_64.rpm
#移除旧版本:
yum remove -y erlang
# 安装:
rpm -ivh --force erlang-22.0.1-1.el7.x86_64.rpm
查看版本:
rpm -q erlang

erlang-22.0.1-1.el7.x86_64
  1. 安装rabbitmq:
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.15/rabbitmq-server-3.7.15-1.el7.noarch.rpm

yum install -y rabbitmq-server-3.7.15-1.el7.noarch.rpm
  1. 创建配置文件
vim /etc/rabbitmq/rabbitmq.config

[
  {rabbit,[{tcp_listeners, [{"0.0.0.0", 5672}]}]},
  {rabbitmq_stomp, [{tcp_listeners, [15673]}]},
  {rabbitmq_web_stomp, [{tcp_listeners, [15674]}]}
].

  1. 启动服务

    启动服务
    systemctl enable rabbitmq-server.service
    systemctl start rabbitmq-server.service
    # 查看
    systemctl status rabbitmq-server.service