rabbitmq
文章平均质量分 79
rabbitmq学习和总结
专注写bug
你知道的越多,你不知道的也越多!
展开
-
RabbitMq——消息积压分析和解决思路
文章目录前言消息积压产生的原因消息积压问题解决前言专栏中之前进行了一系列各种模式的配置、使用和测试操作。但是都只是应用于使用阶段,暂未面向问题解决分析方向。最近看了一篇资料,有大佬说到了消息积压问题的产生原因等问题。对此做出个人见解说明记录。好记性不如烂笔头!消息积压产生的原因正常而言,一般的消息从消息产生到消息消费需要经过以下几种阶段。以Direct模式为例:消息由生产者产生,比如新订单的创建等,经过交换机,将消息发送至指定的队列中,然后提供给对应的消费者进行消费。在这个链路中,存原创 2022-02-28 23:09:58 · 5085 阅读 · 0 评论 -
Springboot——死信队列 DLX 配置和使用
文章目录前言什么是死信配置和测试死信思路分析配置类编写编写消息发送服务测试消息什么时候会成为死信消息?总结参考资料代码下载前言上一篇博客 Springboot——整合RabbitMq测试TTL中,针对设置单个消息期限或者整个队列消息期限,进行了一些配置和说明。同时也都列举了一些区别关系。但考虑过一个问题了没有?不管是设置哪种方式,如果消息期限到了,队列都会将该消息进行丢弃处理。这么做合适么?假设是某个设备的重要信息,或者某个重要的订单信息,因为规定时间内未被及时消费就将其舍弃,是否会造成很严原创 2022-02-28 22:12:09 · 775 阅读 · 4 评论 -
Springboot——整合RabbitMq测试TTL
文章目录什么是TTL?如何设置TTL?设定整个队列的过期时间配置类编写测试对单个消息设定过期时间配置测试总结代码下载什么是TTL?在RabbitMq中,存在一种高级特性 TTL。TTL即Time To Live的缩写,含义为存活时间或者过期时间。即:设定消息在队列中存活的时间。当指定时间内,消息依旧未被消费,则由队列自动将其删除。如何设置TTL?既然涉及到设定消息的存活时间,在RabbitMq中,存在两种设置方式:设置整个队列的过期时间。设置单个消息的过期时间。设定整个队列的过原创 2022-02-28 20:44:05 · 1859 阅读 · 0 评论 -
Springboot——整合Rabbitmq之Confirm和Return详解
文章目录前言为什么会有ConfirmSpringboot 整合 Mq 实现 Confirm 监听机制依赖引入增加配置文件,设定连接信息配置队列、交换机,以及对其进行绑定编写mq消息发送服务编写消息发送接口启动项目进行测试正常测试异常测试什么是Return?增加 ReturnCallback 监听并测试修改 RabbitmqService 配置类测试总结相关代码下载前言之前专栏中,对Springboot整合Rabbitmq都有一系列的配置和说明,但总缺少一些必要的描述信息。导致很多看博客的小伙伴会私信问为原创 2022-02-28 11:07:54 · 4149 阅读 · 4 评论 -
RabbitMq——用户创建权限补充说明
文章目录前言权限说明administrator 超级管理员monitoring 监控者policymaker 策略制定者management 普通管理者其他前言在rabbitmq安装完成后,需要针对每个不同的人创建不同的账号,实现其可以登录rabbitmq 管理界面。如下所示:其中,下列位置就是创建新的账户、密码、权限信息:当用户创建完成后,需要给定当前账号设定一个Tags,也就是权限标签信息。这些权限分别是什么含义呢?权限说明administrator 超级管理员可登陆管理控制台,可查看原创 2022-02-25 21:40:56 · 449 阅读 · 0 评论 -
RabbitMq——rabbitmq消息队列的优劣势
文章目录优势应用解耦异步提速流量削峰填谷劣势优势应用解耦为什么会有应用解耦?以淘宝卖商品为例,在单体项目应用中,针对一个接口的处理,如:顾客下订单,往往会包含以下几种步骤:1、订单系统创建2、库存系统减库存3、支付扣除顾客钱4、生成物流单…假设因为逻辑问题,导致其中某一个环节出现问题,在单体项目中,上面的操作往往是在一个事务流程,将会导致下列现象:其中一个模块出问题,其他模块均不可用。同时,如果需要进行需求变更,比如:在订单系统中增加积分功能。在单体项目中,则需要对原创 2022-02-25 21:03:49 · 719 阅读 · 0 评论 -
Springboot 2.x ——RabbitTemplate为什么会默认消息持久化?
文章目录前言springboot测试测试现象源码分析联想前言之前在Java直接测试mq消息持久化时,采取如下的配置实现消息的持久化://消息持久化测试Builder builder = new Builder();builder.deliveryMode(2);BasicProperties properties = builder.build();channel.basicPublish("", queue_name, properties, string.getBytes());其中针原创 2022-02-14 12:28:25 · 2089 阅读 · 4 评论 -
centos8——安装rabbitmq(3.9.9)亲测
文章目录安装版本官方版本对照表安装步骤官网方式参照1、添加yum存储库信息yum 安装修改登录拦截启动rabbitmq创建新用户赋予权限登录验证命令拓展卸载rabbitmq卸载erlang支持其他命令备注参考资料安装版本erlang 24.1rabbitmq 3.9.9官方版本对照表链接地址:https://www.rabbitmq.com/which-erlang.html安装步骤官网方式参照https://www.rabbitmq.com/install-rpm.html#原创 2021-11-15 13:45:29 · 2719 阅读 · 1 评论 -
RabbitMq学习——Springboot整合rabbitmq之配置延迟消息
一、前言昨晚上,一个大佬说了有关他做一个业务功能,如何将一个商品进行延迟上架,大佬说的方式听着觉得很是新奇,今天特意按照大佬的思维,重新自己搭建实现测试了一下简单的操作。二、配置项明人不说暗话,不喜欢大篇幅的阐述相关,只想将我实践的时候以及碰见的问题说明下,废话不多说,直接上配置。针对rabbitmq这个消息队列的使用,我的专栏中有大篇幅的文章,进行了简单的描述,我们接下来以最简单的dir...原创 2020-02-05 21:39:25 · 971 阅读 · 1 评论 -
RabbitMq学习——Springboot整合rabbitmq之手动消息确认(ACK)
一、前言前几天我研究了关于springboot整合简单消息队列,实现springboot推送消息至队列中,消费者成功消费。同时也加了消息转发器,对消息转发器各种类型的配置等做了总结。但是,主要还有一点,我一直存在疑问:如何确保消息成功被消费者消费?说到这里,我相信很多人会说使用ack啊,关闭队列自动删除啊什么的。主要是道理大家都懂,我要实际的代码,网上找了半天,和我设想的有很大差异,还是自...原创 2019-12-25 17:24:54 · 14668 阅读 · 14 评论 -
RabbitMq学习——Springboot整合rabbitmq之topic模糊匹配配置(四)
一、前言rabbitmq中的交换机类中,topic作为一种很常用的转发模式。在之前的博文中,除了fanout模式外,其他的有关转发器和消息队列的我们都有指定routingkey的写法,在进行配置消息转发器和消息队列时,都是按照具体的routingkey实现关联。但上述操作限制太死板,如何能够进行动态匹配呢?接下来我们引入topic模式。二、配置项2.1、代码配置项编写前的准备上图...原创 2019-12-24 17:24:16 · 1262 阅读 · 1 评论 -
RabbitMq学习——Springboot整合rabbitmq之fanout广播配置(三)
一、简介fanout配置是一种不用配置routingkey的一中交换机形式。只要队列和指定的交换机进行了绑定配置,当交换机收到生产者推送来的消息后,就会将消息广播至已绑定好的队列中。流程如图所示:二、fanout交换机的配置2.1、配置文件编写前的说明如上图所示,我们需要配置一个交换机,两个消息队列,并与指定的交换机进行绑定操作。2.2、配置文件的编写2.2.1、bean的配...原创 2019-12-24 15:50:07 · 1308 阅读 · 1 评论 -
RabbitMq学习——Springboot整合rabbitmq之direct直连配置(二)
一、简介direct 直连方式,也称为精确匹配。根据一个限定的routingkey,转发器向指定的消息队列推送消息。二、配置2.1、springboot整合rabbitmq的配置概述1、springboot整合rabbitmq,基本上都是声明队列的名称各项属性等。2、如果有交换机,则需要将队列和交换机按照指定的routingkey进行绑定操作。所以我们接下来的配置项,需要先声明相关参...原创 2019-12-24 12:55:01 · 965 阅读 · 1 评论 -
RabbitMq学习——Springboot整合rabbitmq之交换机的说明与配置(一)
一、概述我们都知道交换机/转发器,再消息队列中非常实用,他也是rabbitmq区别其他消息队列的最显著的亮点。在rabbitmq中的消息转发器类型中,我们知道有好几种,分别是哪些呢?看源码中的说明吧:/** * Enum for built-in exchange types. */public enum BuiltinExchangeType { DIRECT("direc...原创 2019-12-23 14:39:20 · 985 阅读 · 1 评论 -
Springboot2.X——springboot整合rabbitmq(简单案例)
一、整合前的准备1.1、安装windows/linux系统版本的rabbitmq。1.2、此次整合使用eclipse二、springboot整合rabbitmq2.1、pom依赖引入<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spr...原创 2019-12-09 11:02:10 · 579 阅读 · 1 评论 -
rabbitmq学习——spring整合rabbitmq实现简单的消息发送和接受
一、准备创建一个spring项目,引入spring-amqp依赖pom信息。<dependencies> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>4...原创 2019-11-21 11:54:35 · 303 阅读 · 0 评论 -
rabbitmq学习——centos7 安装rabbitmq 3.8.1
一、安装前的准备1.1、系统版本和名称cat /proc/versioncat /etc/os-release[root@VM_0_3_centos ebin]# cat /proc/versionLinux version 3.10.0-862.14.4.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4....原创 2019-11-19 11:51:44 · 2458 阅读 · 4 评论 -
rabbitmq学习——centos7 卸载删除rabbitmq和erlang
一、卸载rabbitmq--卸载--停止服务rabbitmqctl app_stopyum list | grep rabbitmqyum -y remove rabbitmq-server.noarch二、删除erlangyum list | grep erlangyum -y remove erlang-*yum remove erlang.x86_64...转载 2019-11-11 17:27:44 · 8889 阅读 · 0 评论 -
rabbitmq学习(10)——消息确认机制(confirm)以及事务机制(tx)
一、简介在前面博客中,我们研究了自动应答AutoAck,channel.basicConsume(String queue, boolean autoAck, Consumer callback);当为true时,他表示自动应答;当为false时,需要消息消费者在处理完成消息后,手动回执一个信息 channel.basicAck(envelope.getDeliveryTag(),...原创 2019-11-07 17:24:17 · 703 阅读 · 1 评论 -
rabbitmq学习(9)——topics主题模式
一、简介什么是topics主题模式?以及主题模式的由来?我们之前博客分别讲了fanout方式进行消息订阅转发;使用Direct携带routingKey的方式,实现按照指定的routingKey推送消息。但是,当我们采取exchange的direct方式进行消息推送的时候,我们却有几项难题:1、每当消息队列接收多种消息匹配key时,我们需要在指定的消息消费者中新增多条exchange...原创 2019-11-06 11:54:54 · 467 阅读 · 0 评论 -
rabbitmq学习(8)——Routing路由模式
一、路由模型之前博客说明了,采取FANOUT设置时,表示不处理路由键,只需要将队列绑定到交换机,发送消息到交换机就会被转发到该与交换机绑定的所有队列。所以需要设置路由键并能够按照路由键实现处理的话,就不能使用FANOUT类型。1、消息生产者生产消息,发送至消息转发器,并携带一个routingKey信息。2、orange、black、green分别是各项routingKey名称举例。...原创 2019-11-05 17:59:52 · 492 阅读 · 0 评论 -
rabbitmq学习(7)——Exchange交换机/转发器
一、前言在订阅模式中,我们开始使用到了Exchange作为转发器,对于转发器,他主要有以下功能。接受生产者的消息,同时也将消息分发至各项队列中。二、转发器的类型Exchange.DeclareOk exchangeDeclare(String exchange, BuiltinExchangeType type) throws IOException;在转发器类型枚举类中源码介绍...原创 2019-11-05 15:43:58 · 331 阅读 · 0 评论 -
rabbitmq学习(6)——Publish/Subscribe订阅模式
一、订阅模型简介x:交换机/转发器…含义:1、一个生产者,多个消费者2、之前的生产者产生消息是直接发送给消息队列,由消息队列发送至各个消费者;现在的模式是生产者将消息发送给 交换机 ,再通过 交换机 发送给各项 消息队列。3、以前是一个消息队列,并且一个消息队列发送消息给多个消费者;现在是一个消费者一个消息队列。应用场景举栗:注册验证码–发送邮件、短信...原创 2019-11-04 17:13:17 · 710 阅读 · 0 评论 -
rabbitmq学习(5)——消息应答(autoAck)、队列持久化(durable)以及消息持久化
一、前言Boolean autoAck = false;channel.basicConsume(queue_name, autoAck ,consumer);在simple queue 和 work queue(轮询) 处理中,我们设置的消费者的消息监听都采用 channel.basicConsume(queue_name,true, consumer),其中参数二 boolean au...原创 2019-10-25 15:34:40 · 7439 阅读 · 2 评论 -
rabbitmq学习(4)——work queue工作队列之Fair Prefetch 公平分发
一、出现的原由在上一篇博客中,我们对 消费者一(1000ms) 和 消费者二(2000ms) 设置了不同的延迟效果。运行后,却出现了两个消费者处理的消息数完全一致。但我们从实际的项目需求来说,消费者一处理速度快,就需要多分配消息处理到消费者一中,消费者二处理慢,就少分配消息至消费者二中,这样能够提升消息处理的效率。由此,我们能否使用一项技术,让执行效率高的多消费,执行效率低的少消费呢? --...原创 2019-10-24 16:57:55 · 418 阅读 · 1 评论 -
rabbitmq学习(3)——work queue工作队列之轮询
一、出现背景在我的前一篇博客中,我们简单说明了simple queue 简单队列的发送和接受操作,但总体看代码和流程,我们会发现存在很多不足。简单队列存在的不足:耦合性过高。1、生产者和消费者必须保证一一对应,如果需要实现多个消费者共同消费同一个消息生产者生产的消息时,则会出问题。(消息一旦消费就没有了)2、生产者的队列名称发生变更后,消息消费者的队列名也需要同时进行变更操作。所以...原创 2019-10-24 15:49:03 · 416 阅读 · 0 评论 -
rabbitmq学习(2)——java实现简单队列
一、创建maven-java项目创建maven项目工程,实现简单消息队列操作。简单消息图示信息解释:P:消息生产者C 消息消费者二、依赖引入 <dependencies> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-clien...原创 2019-10-24 10:14:05 · 1236 阅读 · 0 评论 -
rabbitmq学习(1)——mq的下载安装和相关设置(window 10)
一、rabbitmq的下载和安装1、rabbitmq的官网连接地址:地址。2、下载所需要的具体依赖1、rabbitmq的下载地址:连接。2、安装使用rabbitmq,需要优先安装rabbitmq的开发语言环境erlang,其下载连接地址为: 连接。3、下载rabbitmq和erlang需要讲究版本的对应,否则会出现版本不适配的问题,对应规则:连接。3、本次安装版本rabbitmq:...原创 2019-10-23 17:13:09 · 384 阅读 · 5 评论