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

winedt + miktex + SumatraPDF 搭建latex环境

整个环境包含三部分: - winedt: 前端编辑器 - miktex: 后端编译器 - SumatraPDF: 预览器顺序无关紧要, 不过如果先装miktex的话, 可能会被winedt在安装的时候自动找到路径从而不需要设置.1.安装miktex首先在latex-project官网, 打开”get”后, 有四种平台: Linux, Mac OS, Windows, Online. 我写论文

Iteration makes perfection. 6462

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

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

老陈聊架构 3741

记一次在JAVA中客户端使用axis调用webservice服务端出现的异常:Unmarshalling Error: For input string: ""

在使axis调用webservice服务端,参照网上给的demo: Call call = (Call) service.createCall(); call.setTargetEndpointAddress(endpoint);//设置服务请求路径 QName qn = new QName(name); call.setOperationName(qn); call.addParamet

kry1201的专栏 8080

基于图像分割的LIDC-IDRI 数据集预处理之数据下载篇

近期接触到了一个关于图像分割实验项目,关于数据预处理部分在此予以记录,和大家分享。

qq_67696694的博客 1903

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

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

gitblog_00910的博客 415

电商智能客服Agent开发实战:从零到一构建企业级AI助手

电商智能客服Agent是下一代AI应用的核心形态,它不仅能够回答用户问题,还能自主规划任务、调用工具并执行完整工作流程。本文将深入探讨AI Agent的基本概念、技术实现方式及电商场景中的应用,提供完整的开发流程和代码示例,帮助开发者从零开始构建一个功能强大的电商智能客服系统。通过模块化设计、多轮对话记忆管理和工具集成,这个Agent能够处理订单查询、商品推荐、退换货流程等复杂任务,同时具备企业级的安全性和稳定性保障。通过本文的介绍,读者已经掌握了构建电商智能客服Agent的核心技术与实现方法。

m0_64363449的博客 1361

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

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

小蜗牛的珍贵百宝箱 1070

WPS接入DeepSeek,实现AI辅助功能

总的来说,借助 WPS 中宏功能与 DeepSeek 大模型的结合,文档处理、内容创作和数据分析等任务都能更加智能化、自动化。这不仅大幅提升了工作效率,也为办公场景带来了全新的智能化办公体验。

运维老生常谈 3805

YOLOv11+BiFPN双向特征金字塔:全方位解析多尺度检测性能优化指南

飞书链接:https://ecn6838atsup.feishu.cn/wiki/EhRtwBe1CiqlSEkHGUwc5AP9nQe?购买即可解锁800+YOLO优化文章,并且还有海量深度学习复现项目,价格仅需两杯奶茶的钱,每日更新。函数中添加BiFPN的解析逻辑(找到。链接可用,不要多复制空格了。密码:946m22&8。

FJN110的博客 306

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

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

Themberfue的博客 1466

某东x-api-eid-token风控参数分析与破解

x-api-eid-token是京东的风控参数,在接口当中,如果没有该参数,有一定的概率能请求成功,但是在请求一段时间后,会报403权限失败的,该参数主要通过jsTk.do这个接口生成,并且会将其存储到cookie当中。

zhouzhou_98的博客 1552

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

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

无需多言 1809

搞定ESD(五):静电放电问题分析与调试

前面深入分析了静电放电的干扰机理、耦合路径,从现在开始将进入下一个大家非常关注的环节:静电放电问题分析与调试,掌握静电放电问题的分析方法,快速锁定敏感设备或者耦合路径,可以达到事半功倍的效果。

记得诚 2794

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Ubuntu 环境安装 之 RabbitMQ 快速入手

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

明志の博客 6484

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

在Windows环境下的安装RabbitMQ

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

理木客 1673

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

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、付费专栏及课程。

余额充值