首页 > 其他分享 >Rabbitmq

Rabbitmq

时间:2024-02-19 20:12:45浏览次数:36  
标签:Rabbitmq 队列 系统 RabbitMQ MQ rabbitmq 消息

Rabbitmq

官网:
https://rabbitmq.com/install-homebrew.html

安装

brew install rabbitmq
#查看版本信息,及安装位置
brew info rabbitmq
#配置环境变量
open -e ~/.zshrc
#添加如下内容
export PATH=/opt/homebrew/Cellar/rabbitmq/3.12.13/sbin:$PATH

image

rabbitmq命令

# 启动服务
sudo rabbitmq-server

# rabbitmq 后台启动命令
sudo rabbitmq-server -detached

# 关闭服务
sudo rabbitmqctl stop

# 查询rabbitmq的状态
sudo rabbitmqctl status

# 启动插件
sudo rabbitmq-plugins enable rabbitmq_management

# 查找rabbitmq在哪
find / -name 'rabbitmq' -type d

# rabbitmq内存限制
# 系数计算,假设机器内存32g,以下命令限制的最高内存为,32*0.06=1.92g
rabbitmqctl set_vm_memory_high_watermark 0.06

# rabbitmq添加消息日志记录
rabbitmq-plugins enable rabbitmq_tracing

# 查询rabbitmq的进程
ps -ef | grep rabbitmq

# 杀掉rabbitmq进程
ps -ef | grep rabbitmq | grep -v grep | awk '{print $2}' | xargs kill -9

登陆rabbitmq

成功启动服务后,使用以下链接访问主页,则会进入到登陆页面
访问rabbitmq主页
http://localhost:15672/
guest/guest
image

springboot整合rabbitmq

更换Spring initializr的源为阿里云https://start.aliyun.com/
image
更阿里源换后可选择java8版本
image

maven坐标

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

配置文件

一般需要创建一个公共项目common,共享一些配置,比如队列主题,交换机名称,路由匹配键名称等等。

消息队列

消息指的是两个应用间传递的数据。数据的类型有很多种形式,可能只包含文本字符串,也可能包含嵌入对象。

“消息队列(Message Queue)”是在消息的传输过程中保存消息的容器。在消息队列中,通常有生产者和消费者两个角色。生产者只负责发送数据到消息队列,谁从消息队列中取出数据处理,他不管。消费者只负责从消息队列中取出数据处理,他不管这是谁发送的数据。
image

消息队列作用

解耦。假设有系统B、C、D都需要系统A的数据,于是系统A调用三个方法发送数据到B、C、D。这时,系统D不需要了,那就需要在系统A把相关的代码删掉。假设这时有个新的系统E需要数据,这时系统A又要增加调用系统E的代码。为了降低这种强耦合,就可以使用MQ,系统A只需要把数据发送到MQ,其他系统如果需要数据,则从MQ中获取即可。
image

异步。一个客户端请求发送进来,系统A会调用系统B、C、D三个系统,同步请求的话,响应时间就是系统A、B、C、D的总和,也就是800ms。如果使用MQ,系统A发送数据到MQ,然后就可以返回响应给客户端,不需要再等待系统B、C、D的响应,可以大大地提高性能。对于一些非必要的业务,比如发送短信,发送邮件等等,就可以采用MQ。
image

削峰。这其实是MQ一个很重要的应用。假设系统A在某一段时间请求数暴增,有5000个请求发送过来,系统A这时就会发送5000条SQL进入MySQL进行执行,MySQL对于如此庞大的请求当然处理不过来,MySQL就会崩溃,导致系统瘫痪。如果使用MQ,系统A不再是直接发送SQL到数据库,而是把数据发送到MQ,MQ短时间积压数据是可以接受的,然后由消费者每次拉取2000条进行处理,防止在请求峰值时期大量的请求直接发送到MySQL导致系统崩溃。
image

RabbitMQ的特点

RabbitMQ是一款使用Erlang语言开发的,实现AMQP(高级消息队列协议)的开源消息中间件。首先要知道一些RabbitMQ的特点,官网可查:

可靠性。支持持久化,传输确认,发布确认等保证了MQ的可靠性。
灵活的分发消息策略。这应该是RabbitMQ的一大特点。在消息进入MQ前由Exchange(交换机)进行路由消息。分发消息策略有:简单模式、工作队列模式、发布订阅模式、路由模式、通配符模式。
支持集群。多台RabbitMQ服务器可以组成一个集群,形成一个逻辑Broker。
多种协议。RabbitMQ支持多种消息队列协议,比如 STOMP、MQTT 等等。
支持多种语言客户端。RabbitMQ几乎支持所有常用编程语言,包括 Java、.NET、Ruby 等等。
可视化管理界面。RabbitMQ提供了一个易用的用户界面,使得用户可以监控和管理消息 Broker。
插件机制。RabbitMQ提供了许多插件,可以通过插件进行扩展,也可以编写自己的插件。

标签:Rabbitmq,队列,系统,RabbitMQ,MQ,rabbitmq,消息
From: https://www.cnblogs.com/aeolian/p/18021761

相关文章

  • RabbitMQ 使用细节 → 优先级队列与ACK超时
    开心一刻今天坐在太阳下刷着手机老妈走过来问我:这么好的天气,怎么没出去玩我:我要是有钱,你都看不见我的影子老妈:你就不知道带个碗,别要边玩?我:......优先级队列说到队列,相信大家一定不陌生,是一种很基础的数据结构,它有一个很重要的特点:先进先出但......
  • RabbitMQ 消息模型
         参考链接:  https://blog.csdn.net/qq_40991313/article/details/126801025?spm=1001.2014.3001.5501 3.5.3.总结描述下Direct交换机与Fanout交换机的差异?   Fanout交换机将消息路由给每一个与之绑定的队列   Direct交换机根据RoutingKey判断路由......
  • spring-cloud-stream-rabbitmq 3.1.1使用
       1.引入springcloud,springcloudalibaba,springboot依赖<!--SpringCloud微服务--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-......
  • rabbitmq部署问题
    部署方式:Docker部署[root@rabbitmq/data/software/rabbitmq5675]#catdocker-compose.ymlversion:"3"services:rabbitmq:image:rabbitmq:v3.11.3#此镜像名被修改过container_name:rabbitmq5675restart:alwaysvolumes:-/data/rabbit......
  • SpringBoot 整合 RabbitMQ
    Docker搭建RabbitMQ拉取RabbitMQ的镜像执行命令dockerpullrabbitmq:3.7-management执行运行命令dockerrun-d--hostnamerabbit--namerabbit-eRABBITMQ_DEFAULT_USER=admin-eRABBITMQ_DEFAULT_PASS=admin-p15672:15672rabbitmq:3-management打开浏览器访问......
  • RabbitMQ快速入门
    MQ的基本概念MQ概述MQ全称MessageQueue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。MQ,消息队列,存储消息的中间件分布式系统通信两种方式:直接远程调用和借助第三方完成间接通信发送方称为生产者,接收方称为消费者MQ的优势和劣势优......
  • RabbitMQ 学习笔记 - 1
    RabbitMQ的基础概念生产者产生数据发送消息的程序是生产者交换机交换机是RabbitMQ非常重要的一个部件,一方面它接收来自生产者的消息,另一方面它将消息推送到队列中。交换机必须确切的知道如何处理它接收到的消息,是将这些消息推送到特定队列还是推送到多个队列,亦或者是把消息丢......
  • 动力节点RabbitMQ教程|12小时学会rabbitmq消息中间件-02
    RabbitMQ集群cluster与高可用RabbitMQ的集群分两种模式,一种是默认集群模式,一种是镜像集群模式;在RabbitMQ集群中所有的节点(一个节点就是一个RabbitMQ的broker服务器)被归为两类:一类是磁盘节点,一类是内存节点;磁盘节点会把集群的所有信息(比如交换机、绑定、队列等信息)持久化......
  • RabbitMQ 命令行操作
    启动&停止服务器启动服务器rabbitmq-serverstart&停止服务器rabbitmqctlstop_app查看管控台http://localhost:15672/#用户名guest#密码guest命令行基础操作1.应用关闭应用rabbitmqctlstop_app启动应用rabbitmqctlstart_app查看节点......
  • RabbitMQ 高级特性
    消息100%可靠性投递的解决方案生产端可靠性投递保障消息成功发出保障MQ节点的成功接收发送端收到MQ节点(Broker)确认应答完善的消息补偿机制解决方案1:消息落库消息落库,对消息状态进行打标。解决方案2:二次确认,回调检查消息的延迟投递,做二次确认,回调检查。消费端幂......