RabbitMQ企业级入门
文章平均质量分 63
无论在日常应用与面试过程中RabbitMQ都是非常容易碰到的,本专栏从零开始,带你落地企业级的RabbitMQ。
小鲍侃java
CSDN博客专家,华为签约作者,全网粉丝10w,阅读量100w+。现任企业架构师,主要分享和讲解毕设,java入门与晋级架构师的技巧与知识。
展开
-
rabbitmq的启动命令
1、以应用方式启动 rabbitmq-server -detached 后台启动 Rabbitmq-server 直接启动,如果你关闭窗口或者需要在改窗口使用其他命令时应用就会停止 关闭:rabbitmqctl stop 2、以服务方式启动(安装完之后在任务管理器中服务一栏能看到RabbtiMq) rabbitmq-service install 安装服务 rabbitmq-serv...原创 2020-04-10 14:38:19 · 15712 阅读 · 4 评论 -
RabbitMQ简介与springboot整合
1.什么是消息队列 消息队列,主要解决异步消息的管理(注册后,短信发送不是必须,可以使用队列)。实现系统之间的双向解耦,同时也能起到消息缓冲,消息分发的作用。当生产者产生大量数据,而消费者无法快速消费,(秒杀数据量过大使系统崩溃,队列可以废弃多余请求),或者是消费者异常了(服务挂掉后使请求丢失,队列可以保存请求)。 说白话讲,主要作用就是异步,削峰与解耦。 1.rabbitMQ简介 1.运行流程 rabbitmq是消息队列的一种,通过上图可以看到工作流程。生产者把请求给交换机 ,交换机把请求按照一定绑原创 2021-11-21 21:26:41 · 1607 阅读 · 0 评论 -
RabbitMQ的死信队列
1.业务背景 如果有有错误消息,如果手动nack同时将消息放回到队列中,那么这条消息会反复消费,留在队列中 。 如果nack后将消息丢弃,那么如果碰到网络抖动,消息也会丢失 。所以 通过建立死信队列避免消息丢失。 2.实现 文件目录如下: 1.原理 我们额外建立一条队列。当消息进入进入业务队列后,如果收到nack那么就将这条消息放入这条条队列中 。 2.修改pom文件 <dependency> <groupId>org.springframe原创 2021-11-21 21:29:55 · 6525 阅读 · 0 评论 -
RabbitMQ的延时重试队列
1.背景 通过上文学习知道了死信队列,如果只是网络抖动,出现异常那么直接进入死信队列,那么是不合理的。这就可以使用延时重试队列,本文将介绍如何实现延时重试队列。 2.原理 图是俺在网上找的,请原作者谅解。 发送到业务队里 如果正常收到 正常运行 如果处理失败 重试 并投入延时队列 如果超过延时时间 重新投入业务队列 如果重试次数大于3 那么进入死信队列 3.代码实现 1.业务队列 这里声明业务队列与绑定关系。 @Configuration public class BusinessConfi原创 2021-11-21 21:28:19 · 7319 阅读 · 0 评论 -
RabbitMQ中的SimpleMessageListener
通过上文可以使用rabbitmq了,但是有这样一个特殊需求,想不使用通用的配置,而是该队列使用特殊的配置,那么就可以使用SimpleMessageListener,来自定义消费者。 1.代码实现 可以看到下文两个方法配置了两种应答方式,方法一为手动应答,方法二为自动应答。 1.手动应答SimpleMessageListener 如正规方式一样,使用手动应答,需要在接收到消息后手动发送ack/nack。核心代码如下:container.setAcknowledgeMode(AcknowledgeMode.原创 2021-11-21 21:25:00 · 6701 阅读 · 0 评论 -
RabbitMQ怎么保证消息不丢失
1.背景 在面试过程中,该题目是毕不可少的必答题。博主在这里经过多方面整理,总结了下文。如果有面试需求,可以适当的背背。 2.消息投递的过程 先来说明一个概念,什么是可靠投递呢?在RabbitMQ中,一个消息从生产者发送到RabbitMQ服务器,需要经历这么几个步骤: 生产者准备好需要投递的消息。 生产者与RabbitMQ服务器建立连接。 生产者发送消息。 RabbitMQ服务器接收到消息,并将其路由到指定队列。 RabbitMQ服务器发起回调,告知生产者消息发送成功。 所谓可靠投递,就是确保消息能原创 2021-11-21 21:23:12 · 532 阅读 · 0 评论