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