RabbitMQ从安装到上手

微服务SpringCloud使用Turbine+RabbitMQ+Dashboard聚合监控数据 在搭建springcloud微服务时,可以使用Turbine进行监控多个微服务,用dashboard展示数据。 不过在springboot1.5.x+springcloudEdgware版,使用消息中间间收集数据时会出现一个错误,导致Turbine整合rabbitmq项目无法运行。 错误信息:org.springframework.context.ApplicationContextExcep... 阅读详情

导言

RabbitMQ版本: 4.0.5
JDK: 17
Spring Cloud Alibaba 2023.0.1.0

一. 安装

拉取镜像
docker pull rabbitmq:management
启动容器
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
进入容器,启动插件

进入容器

docker exec -it 容器id /bin/bash

启动所有插件

rabbitmq-plugins enable rabbitmq_management
安装完成

到这里就已经安装完成了,通过 http://localhost:15672 访问rabbitmq的dashboard, 因为没有设置密码, 因此用默认用户密码登录

用户名: guest

密码: guest

延时队列

rabbitmq本身不支持延时队列功能, 但是可以通过两种途径实现延时队列功能

第一: 使用延时队列插件

第二: 使用TTL + 死信队列

第二种方式的实现原理:

在MQ中可以给消息设置过期时间 TTL, 当消息过期就会进入死信队列, 在死信队列中消费消息从而实现延时队列功能, 但是要保证消息不能在原始队列中就被消费

第一种方式:

首先需要下载延时队列插件

https://www.rabbitmq.com/community-plugins(这是rabbitmq插件的下载路径)

https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases(这是延时队列插件下载路径)

将下载好的插件复制到rabbitmq的插件文件夹下, 这里我已经将插件放在了临时文件夹tmp下, 格式为: docker cp 插件路径 容器文件夹路径(格式为 容器id:文件相对路径)

docker cp /tmp/rabbitmq_delayed_message_exchange-4.0.2.ez 09ddf39c3b55:/plugins

复制之后进入容器

docker exec -it rabbitmq /bin/bash

启动插件, 因为之前就已经启动其他插件, 所以这里只需要启动延时队列插件

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

如图只要在创建交换机的地方有如下选项就说明安装成功

延时队列使用demo:

延时交换机配置:



public final static String ERP_DELAYED_CANCEL_ORDER_QUEUE = "erp-delayed-cancel-queue";
public final static String ERP_DELAYED_CANCEL_ORDER_EXCHANGE = "erp-delayed-cancel-exchange";
public final static String ERP_DELAYED_CANCEL_ORDER_ROUTING = "erp-delayed-cancel-routing";
public final static String ERP_DELAYED_CANCEL_ORDER_DLQ_QUEUE = "erp-delayed-cancel-dlq-queue";
public final static String ERP_DELAYED_CANCEL_ORDER_DLQ_EXCHANGE = "erp-delayed-cancel-dlq-exchange";
public final static String ERP_DELAYED_CANCEL_ORDER_DLQ_ROUTING = "erp-delayed-cancel-dlq-routing";


/**
* 取消订单的延时交换机
* @return
*/
@Bean
public CustomExchange delayedCancelOrderExchange() {
    return new CustomExchange(ERP_DELAYED_CANCEL_ORDER_EXCHANGE, "x-delayed-message", true, false,
                              Map.of("x-delayed-type", "direct"));
}

/**
* 延时取消订单队列
* @return
*/
@Bean
public Queue delayedCancelOrderQueue() {
    Map<String, Object> args = new HashMap<>();
    args.put("x-dead-letter-exchange", ERP_DELAYED_CANCEL_ORDER_DLQ_EXCHANGE);
    args.put("x-dead-letter-routing-key", ERP_DELAYED_CANCEL_ORDER_DLQ_ROUTING);
    return new Queue(ERP_DELAYED_CANCEL_ORDER_QUEUE, true, false, false, args);
}

/**
 * 延时取消订单队列和交换机绑定关系
 * @return
 */
@Bean
public Binding delayedCancelOrderBinding() {
    return BindingBuilder.bind(delayedCancelOrderQueue())
    .to(delayedCancelOrderExchange())
    .with(ERP_DELAYED_CANCEL_ORDER_ROUTING)
    .noargs();
}

/**
 * 延时取消订单死信队列
 * @return
 */
@Bean
public Queue delayedCancelOrderDeadLetterQueue() {
    return new Queue(ERP_DELAYED_CANCEL_ORDER_DLQ_QUEUE);
}

/**
 * 延时取消订单死信交换机
 * @return
 */
@Bean
public DirectExchange delayedCancelOrderDeadLetterExchange() {
    return new DirectExchange(ERP_DELAYED_CANCEL_ORDER_DLQ_EXCHANGE, true, false);
}

/**
 * 延时取消订单死信交换机与队列绑定关系
 * @return
 */
@Bean
public Binding delayedCancelOrderDeadLetterBinding() {
    return BindingBuilder.bind(delayedCancelOrderDeadLetterQueue())
    .to(delayedCancelOrderDeadLetterExchange())
    .with(ERP_DELAYED_CANCEL_ORDER_DLQ_ROUTING);
}

发送延时消息demo:

	/**
	 * 发送延时消息(需配置延时交换机)
	 * @param exchange 交换机
	 * @param routing	路由
	 * @param message	消息
	 * @param delayTime	延时时间 (分钟)
	 */
	public void sendDelayMessage(String exchange, String routing, String message, long delayTime) {
		log.info("延时取消订单消息发送完毕,{}" , message);
		Message msg = MessageBuilder.withBody(message.getBytes(StandardCharsets.UTF_8)).setHeader("x-delay", delayTime * 60 * 1000).build();
		rabbitTemplate.convertAndSend(exchange, routing, msg);
	}

二. 简介

交换机介绍
  • Direct Exchange(直连交换机):
    直连交换机会根据消息携带的路由键(Routing Key)精确匹配绑定键(Binding Key),然后将消息路由到匹配的队列中。
    使用场景:通常用于消息的精确投递,适合点对点通信。
    举例:如果消息的路由键是 “error”,那么消息会被发送到绑定键也为 “error” 的队列。
  • Fanout Exchange(扇形交换机):
    扇形交换机会将接收到的消息广播给所有绑定到该交换机的队列,忽略路由键。
    使用场景:适合广播场景,比如发送一条通知给多个消费者。
    举例:发布订阅模式,消息会被投递到所有绑定到该交换机的队列中,不管路由键是什么。
  • Topic Exchange(主题交换机):
    主题交换机允许使用通配符进行路由,消息会根据路由键匹配绑定键的模式(支持通配符 * 和 #)。
    使用场景:适合需要按某些规则或模式发送消息的场景。
    通配符:
    * 匹配一个单词。
    # 匹配零个或多个单词。
    举例:路由键是 log.error.system,可以匹配绑定键为 log.*.system 或 log.# 的队列。
  • Headers Exchange(头部交换机):
    头部交换机不依赖路由键,而是根据消息头(Headers)中设置的键值对进行匹配。
    使用场景:当消息路由逻辑更加复杂或需要基于消息属性(头部信息)进行路由时,可以使用这种交换机。
    举例:消息头里包含 x-match=all 时,消息必须匹配所有头部值,x-match=any 时只需要匹配任意一个头部值。
15-云原生监控体系-监控 RabbitMQ[配置启用&Dashborad&告警规则实战] 它相对于系统中发出度量的对象的数量进行了很好的扩展 (连接、通道、队列、使用者等),保持较小的响应大小和时间。例如,/metrics/per-object返回系统中所有实体的所有度量,即使大多数客户端(如监控工具)没有使用其中的许多度量。每个对象:每个对象度量对的单个度量。由于有大量的统计数据发射实体,例如大量的连接和队列,这可能会导致非常大的有效载荷和大量的CPU资源用于串行数据输出。在官方插件中,禁用每个对象的度量,并且只使用它来收集与erlang相关的度量,使用非官方插件收集其他所有监控指标。 阅读详情

相关推荐

windows rabbitMQ安装(轻松简单,快速上手)

文章目录前言windows rabbitMQ安装1、Erlang安装下载地址:2、通过官网下载RabbitMQ安装包3、RabbitMQ 管理3.1、进到MQ安装目录/sbin目录下执行3.2、打开浏览器进行访问 前言   如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!! windows rabbitMQ安装 由于RabbitMQ是采用Erlang语言开发的,遵循AMOP协议并建立强大的Erlan

杨杨杨~~的博客 648

Docker中为RabbitMQ安装rabbitmq_delayed_message_exchange插件

rabbitmq_delayed_message_exchange是一款向RabbitMQ添加延迟消息传递(或计划消息传递)的插件。

☆往事随風☆的博客 1887

Topas——基于Geant4的放射治疗蒙特卡罗算法模拟工具

本文内容参考Joseph Perl 的线上会议,视频详情可见于,该视频会议内容主要介绍Topas功能、软件架构、工作流程、参数设定、物理模型、具体案例等,对TOPAS的基本入门使用方法以及使用规定作出阐述。

fy方的博客 7604

『RabbitMQ』RabbitMQ高可用部署架构——镜像集群

📣读完这篇文章里你能收获到 - RabbitMQ多种模式的区别及概念,手把手带你搭建高可用集群,接入HaProxy做高可用负载均衡,针对生产突发的异常场景提进行测试验证

老陈聊架构 3741

达梦7实时主备集群

达梦7实时主备配置实时主备数据环境说明配置主库配置 dm.ini配置dmmal.ini配置dmarch.ini配置dmwatcher.ini配置dmwatcher.ini以mount方式启动主库设置OGUID修改数据库为primary模式配置备库 在服务器部署过程中,通常搭建有数据库主备集群,用于防备数据库服务器产生问题影响数据正常,在此,我们分享一下在虚拟机环境中模拟搭建实时主备的数据守护模式。 在搭建环境之前,需用户确认主备DM7的数据库已安装完成,且版本一致,同时还应注意各实例所在主机的操作系统位数、

g360382的博客 1022

B-Tree数据存储

SQLITE数据存储1. B-Tree的优势  在SQLite中数据库、表、索引都是通过B-Tree和B+Tree的形式进行存储的。如果采用传统的二叉树查找树、红黑树的查找深度一般为log2(N) \log{_2}(N)(其中N表示的是整个树的关键字的数目),在数据库中如果存储的资源过多,就会导致查找一个数据过程中出现较多的磁盘I/O操作,而过多的磁盘操作就会导致整个查找的效率较低,而基于二叉树的一

Promiscuous_youth的博客 1141

RabbitMQ仪表板:实时监控和可视化

你是否还在为RabbitMQ消息队列的运行状态监控而烦恼?是否希望有一个直观的界面来查看消息流转、队列负载和节点健康状况?本文将详细介绍RabbitMQ仪表板(Dashboard)的功能与使用方法,帮助你轻松掌握实时监控和可视化的技巧,提升系统运维效率。 ## 启用RabbitMQ管理插件 要使用RabbitMQ仪表板,首先需要启用RabbitMQ的管理插件(rabbitmq_manageme...

gitblog_00910的博客 415

Arm Neoverse CMN-700 QoS与PrefetchTarget架构解析

在现代多核处理器系统中,内存访问性能优化是提升整体效能的关键。QoS(服务质量)技术通过优先级调控机制,确保关键任务获得更高的缓存带宽和内存访问权限。PrefetchTarget作为预取技术的一种实现,能够显著降低内存访问延迟,特别适用于AI训练和数据库系统等高性能计算场景。Arm Neoverse CMN-700通过RN SAM模块实现了硬件级的地址范围检测和优先级调控,支持最多8个独立内存区域的QoS配置。测试数据显示,合理配置QoS可使关键任务延迟降低40%,而PrefetchTarget技术则能减少

weixin_36197669的博客 314

[RabbitMQ] RabbitMQ介绍、安装与快速上手

RabbitMQ 是一个企业级消息代理,能够处理大量的消息传递,支持异步通信。它可以用于分离应用程序组件,实现异步处理、负载均衡和消息路由等功能。RabbitMQ 是一个功能强大的消息中间件,能够支持多种消息传递模式和多种协议,广泛应用于企业级应用程序中。通过本文的介绍和示例,您可以快速上手 RabbitMQ 的安装与基本使用。RabbitMQ 介绍:基本概念和优势。安装步骤:如何在 Ubuntu 和 CentOS 上安装 RabbitMQ。快速上手:创建生产者和消费者的示例代码。

小蜗牛的珍贵百宝箱 1070

【RF】Receiver Function接收函数:从理论到实践的深度解析

本文深入解析地震学中的接收函数(Receiver Function, RF)技术,从理论原理到实践操作。文章将RF比作地球的“听诊器”,详细阐述了其通过反褶积剥离震源影响、揭示地下结构(如莫霍面)的核心机制,并提供了使用Python和rf库进行数据处理、计算、动校正与叠加的完整实战流程,同时探讨了其应用、局限性与常见问题的解决方案。

Jerry的专栏 121

字符集的选择

字符集的选择 一:背景介绍 DICOM特定字符集(0008,0005) 此标签获得不同的值就代表使用不同的语言进行解码。 以下为多家CT厂商的(0008,0005)取值: 字符集: unicode是字符集,ASCII、GB2312、GBK、GB18030既是字符集也是编码方式,UTF-8只是编码方式。 二:中文字符集介绍 世界通用字符集——UTF 中文字符集——GB2312、GBK、GB18030 字符集的详细介绍 一:UTF-8 程序是把一个字节一个字节的来读取,然后再根据字节中开头的bit

qq_41972968的博客 1519

RabbitMQ ①-MQ | Linux安装RabbitMQ | 快速上手

MQ(Message Queue)即消息队列,是一种应用间通信的一种方式。消息队列是一种异步通信方式,生产者(Producer)将消息放入队列,消费者(Consumer)从队列中取出消息进行消费。

Themberfue的博客 1466

[特殊字符] 从零构建携程/飞猪机票价格爬虫:Python异步抓取与反爬对抗实战

在出行决策、竞品分析、价格预测模型训练等场景中,稳定获取携程(Ctrip)和飞猪(Fliggy)的实时机票价格波动数据是刚需。然而,这两大平台均部署了业界顶尖的反爬体系——包括但不限于:动态请求签名(SignToken设备指纹采集(UACanvasWebGL接口参数加密(X-Sign_abtestcookie混淆)频率限制与 IP 封禁(滑动窗口 + 行为检测)目录前言:为什么需要自建机票价格爬虫?一、技术选型与项目架构1.1 核心技术栈1.2 系统架构图(文字描述)1.3 法律与道德声明。

2201_76125261的博客 337

[RabbitMQ] RabbitMQ介绍,安装与快速上手

首先,我们要知道一下什么是RabbitMQ.其中,MQ是MessageQueue的缩写,也就是消息队列的缩写,顾名思义,消息队列就是一个队列,有关队列的知识我们在之前数据结构的部分学习过,他的特点就是先入先出,只不过现在队列中放入的是消息而已,消息可以非常简单,比如只包含字符串,也可以很复杂,比如内嵌对象.MQ通常用于分布式系统之间的通信.同步通信直接调用对方的服务,数据从一端发出之后就立即传递到另一端.异步通信。

无需多言 1809

YOLOv11改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合

可扩展的高效物体检测BiFPN(加权双向特征金字塔网络)

Limiiiing的博客 5494

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Ubuntu 环境安装 之 RabbitMQ 快速入手

Rabbit, 兔子的意思互联网行业很多公司, 都喜欢用动物命名产品, 或者作为公司的logo, 吉祥物. 比如: 腾讯的企鹅, 京东的狗, 美团的袋鼠, 携程的海豚,阿里就更多了, 蚂蚁, 飞猪,天猫,菜鸟, 闲鱼, 盒马… 更是以一己之力, 组建了一个动物园…Rabbit也是⼀个公司名.消息队列 的意思 ,RabbitMQ是Rabbit企业下的⼀个消息队列产品.RabbitMQ是⼀个实现了AMQP的消息队列服务,是当前主流的消息中间件之⼀

明志の博客 6484

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

在Windows环境下的安装RabbitMQ

本文旨在方便平时测试,所以在Windows环境下的安装RabbitMQ,实际上肯定是安装在docker容器中或者linux环境中。原文地址:在Windows环境下的安装RabbitMQ 文章目录下载erlang安装MQ安装RabbitMQ-Plugins 下载erlang 原因在于RabbitMQ服务端代码是使用并发式语言erlang编写的,下载地址:http://www.erlang.org...

理木客 1673

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

RabbitMQ安装配置

一、Windows系统下RabbitMQ的安装配置 1、Windows版Erlang的安装 Rabbit MQ 是建立在强大的Erlang OTP平台上,因此安装RabbitMQ之前要先安装Erlang。 Windows版Erlang的下载地址:http://www.erlang.org/download.html。根据自己的系统(32位或64位)下载对应的版本,下载完后,直接点“next”

Maverick的博客 602

RabbitMQ 安装和初始化

真的是服了 rabbitmq ,官网的安装教程看起来十分的繁琐,到处都是链接,对新手十分的不友好。折腾了一天,才摸索出在 Linux 上面安装的套路,这里总结一下,以防后面使用到。 1. 安装erlang rabbitmq 需要依赖 erlang,官网说的非常的清楚,具体的下载地址为: https://packagecloud.io/rabbitmq/erlang 提供了 各种操作系统和版本的 e...

roseduan 的个人博客 1117

Windows中下载并安装RabbitMQ

1.打开防火墙→入站规则→新建规则→选择“端口”,下一步→选择TCP,并在特定本地端口中填入5671-5672,下一步→选择“允许连接”,下一步→下一步→输入名称或描述→完成。2.打开防火墙→入站规则→新建规则→选择“端口”,下一步→选择TCP,并在特定本地端口中填入15672,下一步→选择“允许连接”,下一步→下一步→输入名称或描述→完成。Tag为角色名称,如:administrator、monitoring、policymaker、management、impersonator。

Quber 5554

RabbitMQ 学习(二)安装

1.docker安装。 docker run -d -p 15672:15672 -p 5672:5672 -p 15674:15674 -p 61613:61613 --hostname mars-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 rabbitmq:3-man...

qq_34874784的博客 195

Linux下RabbitMQ的安装与卸载

安装相关依赖: yum update yum install epel-release yum install gcc gcc-c++ glibc-devel make ncurses-devel openssl-devel autoconf java-1.8.0-openjdk-devel git wget wxBase.x86_64 安装 ErLang wget http://package...

qq_41615095的博客 2546

RabbitMq安装详细说明

安装步骤 由于RabbitMQ依赖Erlang, 所以需要先安装Erlang。 Erlang和RabbitMq版本对应关系 https://www.rabbitmq.com/which-erlang.html 注:本教程下载版本为官方推荐版本: ErLang:23.0 Rabbitmq:3.8.8 第一步 安装所需类库 yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gccc++ kern

铁蛋的博客 849

RabbitMQ下载与安装(window版)

转载:https://www.jianshu.com/p/3d43561bb3ee 官网开道 RabbitMQ下载与安装英文教程 下载与安装 erlang 由于RabbitMQ是基于erlang的,所以,在正式安装RabbitMQ之前,需要先安装一下erlang。 erlang与RabbitMQ版本的对应关系,如:RabbitMQ3.6.10,建议的erlang版本是19.3.x(安装前必看) Erlang下载地址(各版本都可下载) 我下载的是19.3,地址:http://erlang.org

9347的专栏 1070

CentOS7.x 安装RabbitMQ

1.到RabbitMQ官网下载对应的安装包 RabbitMQ下载地址 2.在安装RabbitMQ之前需要安装Erlang环境 2.1) 安装erlang依赖环境 # yum -y install xmlto zip unzip install build-essential m4 openssl openssl-devel # yum -y...

lihongtai的专栏 789

Docker安装部署RabbitMQ

1. 什么是MQ 消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已 作用:应用程序“对”应用程序的通信方法。 2. 应用场景 主要解决异步处理、应用解耦、流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构 1.异步处理 用户注册后,需要发注册邮件和注册短信 2.应用解耦 用户下单后,订单系统需要通知库存系统 3.流量削锋(重点) ...

AWildCat的博客 889
下一篇: RabbitMQ报错: Shutdown Signal: channel error
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值