![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
RabbitMQ
文章平均质量分 94
详细介绍了RabbitMQ的基础、消息确认、重回队列、return机制、死信交换机及延迟队列、与Spring和SpringBoot的整合使用、集群搭建等。代码地址https://github.com/RookieMember/RabbitMQ-Learning
没头脑遇到不高兴
Java开发
展开
-
(18)不重启服务动态停止、启动RabbitMQ消费者
我们在消费RabbitMQ消息的过程中,有时候可能会想先暂停消费一段时间,然后过段时间再启动消费者,这个需求怎么实现呢?我们可以借助RabbitListenerEndpointRegistry这个类来实现,它的全类名是org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry,通过这个类可以实现全部队列消息的启动、停止消费,也可以实现指定队列消息的启动、停止消费。原创 2023-09-04 19:56:17 · 1894 阅读 · 0 评论 -
(17)不重启服务动态调整RabbitMQ消费者数量
不重启服务动态调整RabbitMQ消费者数量原创 2022-09-21 16:42:30 · 4151 阅读 · 6 评论 -
从源码角度分析RabbitMQ重启后,消费者停止消费怎么解决
前段时间的RabbitMQ broker服务端由于某个队列一直积压消息,运维在凌晨对mq服务端机器pod进行了扩容,重启了RabbitMQ,然后早上发现自己的服务在mq重启之后一直报异常,停止消费了,导致影响了业务的运行,虽然mq重启成功了但是消费者却没有重连成功。本节会通过分析spring-rabbit的源码,来分析问题出现的原因以及解决办法。先看下报了什么异常,这里挑了一些主要的异常堆栈贴出来o.s.a.r.l.BlockingQueueConsumer - Q...原创 2022-01-18 12:36:35 · 11437 阅读 · 5 评论 -
(16)RabbitMQ与Spring、SpringBoot整合时的坑及注意点
一:消费者报错消费者出现ERROR日志:Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - unknown delivery tag 1, class-id=60, method-id=80)...原创 2019-05-06 13:59:37 · 7534 阅读 · 4 评论 -
(15)RabbitMQ与SpringBoot的整合使用
本节将会介绍一下RabbitMQ与SpringBoot的整合使用,而且会实现设置confirm和return回调确认,并且会对 "Only one ConfirmCallback is supported by each RabbitTemplate"和"Only one ReturnCallback is supported by each RabbitTemplate"出现的原因做出说明并给出...原创 2019-04-30 22:16:37 · 3787 阅读 · 0 评论 -
(14)RabbitMQ与Spring的整合使用
本节将会介绍一下RabbitMQ与Spring的整合使用:spring-amqp和spring-rabbit,RabbitTemplate、MessageListener的使用介绍,如何发送消息,如何接收消息,如何设置消费者ack确认,如何添加confirm和return回调。。。。。。概述从事Java开发的小伙伴一般都离不了Spring框架吧,本节就介绍一下RabbitMQ与Spring...原创 2019-04-25 13:11:40 · 1473 阅读 · 2 评论 -
(13)RabbitMQ实现延迟队列的两种方式
本节将会给大家介绍一下什么是延迟队列,延迟队列的使用场景,RabbitMQ实现延迟队列的两种方式:TTL+DLX(即消息有效期+死信交换机/队列),rabbitmq-delayed-message-exchange插件。什么是延迟队列/消息延迟队列是存储延迟消息的队列,延迟消息就是生产者发送了一条消息,但是不希望该消息不要被立即消费,而是设置一个延迟时间,等过了这个时间再消费消息。延迟...原创 2019-04-22 18:28:26 · 6558 阅读 · 4 评论 -
(12)RabbitMQ的TTL(消息有效期)和DLX(死信交换机/队列)
本节继续介绍RabbitMQ的高级特性:TTL(Time-To-Live消息有效期)和DLX(Dead-Letter-Exchange死信交换机、死信队列)RabbitMQ的TTL1、TTL概述RabbitMQ的TTL全称为Time-To-Live,表示的是消息的有效期。消息如果在队列中一直没有被消费并且存在时间超过了TTL,消息就会变成了"死信" (Dead Message),后续无...原创 2019-04-13 17:34:23 · 7137 阅读 · 4 评论 -
(11)RabbitMQ的mandatory、immediate和ReturnListener
上一节介绍了RabbitMQ的生产者确认机制,这节继续介绍RabbitMQ的生产者确认相关的高级特性:mandatory、immediate、ReturnListener。概述上节介绍了RabbitMQ的生产者确认机制,里面特别强调过:当消息发送到交换机后,如果该交换机没有绑定队列或者交换机上没有与发送消息的routing key相匹配的队列,那么消息也会丢失,并且生产者都会收到Rabbi...原创 2019-03-31 18:18:52 · 768 阅读 · 0 评论 -
(10)RabbitMQ生产者确认:事务与confirm机制
上节介绍了RabbitMQ的消息持久化、Ack和重回队列,本节会继续介绍RabbitMQ的高级特性,将会介绍一下RabbitMQ的生产者确认的两种模式:事务与confirm机制。概述我们上一节介绍了RabbitMQ的事务机制,在RabbitMQ broker因为某些原因崩溃、重启时,可以确保消息不会丢失。但是我们发送完消息之后,并不知道消息有没有真的发到了RabbitMQ服务器上并存储完毕...原创 2019-03-31 10:52:17 · 4698 阅读 · 0 评论 -
(9)RabbitMQ消息持久化、消费者Ack确认与重回队列
前面几节讲了RabbitMQ的入门以及几种常用交换机的使用方法,从本节开始将会介绍RabbitMQ的高级特性,这节就先介绍一下RabbitMQ的消息持久化、消费者Ack确认、消费者Nack拒绝与requeue重回队列。RabbitMQ消息持久化RabbitMQ持久化介绍之前的博客代码例子中发的消息都是非持久化的,就是只会存储到内存中,如果RabbitMQ服务器重启、关闭、意外挂掉的话,...原创 2019-03-23 21:48:46 · 5666 阅读 · 8 评论 -
(8)RabbitMQ之topic(主题)交换机
本节将会介绍RabbitMQ中的topic(主题)交换机,通过在上一篇博客的基础上,利用topic形式的exchange对程序进行改进,将会变得更加灵活。Topic exchange(主题交换机)发送到topic交换机的消息不能具有任意的 routing_key —— 它必须是由点分隔的单词列表。单词可以是任何内容,但通常它们指定与消息相关的一些功能。一些有效的路由键示例:“ stock...原创 2019-03-19 12:07:48 · 3063 阅读 · 9 评论 -
(7)RabbitMQ之direct交换机——routing(路由)
本机将会介绍一个新的exchange:direct交换机,通过程序示例演示其消息routing(路由)的功能。概述本机我们将通过一个发送日志的程序来演示direct类型的exchange的routing功能。生产者发送日志,级别分别为info,warn,error等,消费者只会接收routing key 跟其队列的binding key完全匹配的消息。相关概念介绍1、Binding...原创 2019-03-12 20:13:53 · 1071 阅读 · 0 评论 -
(6)RabbitMQ之fanout交换机——Publish/Subscribe(发布订阅)
上节我们介绍了RabbitMQ的工作队列,这一节先会对RabbitMQ的几种交换机做个大概的介绍,然后会介绍一下fanout(扇形)类型的exchange,并通过代码示例达到Publish/Subscribe(发布订阅)也就是广播的效果。概述我们之前的例子当中,将exchange的名字设为了空字符串,貌似都是将消息直接发送给了Queue,实际上也是发送给了交换机的,只不过这个exchang...原创 2019-03-05 23:21:57 · 2507 阅读 · 1 评论 -
(5)RabbitMQ之Work Queues(工作队列)
上节中我们介绍了RabbitMQ的入门helloworld程序,本节会在上节的基础之上介绍Work Queues(工作队列):包括工作队列的使用方式、默认的分发方式及如何做到公平转发等。概述根据官网介绍,工作队列(又称:任务队列)背后的主要思想是避免立即执行资源密集型任务,并且必须等待它完成。相反,我们安排任务稍后完成。我们将任务封装为消息并将其发送到队列。在后台运行的工作进程将弹出任务...原创 2019-03-03 15:40:27 · 634 阅读 · 0 评论 -
(4)RabbitMQ入门Helloworld
本节将会通过一个RabbitMQ的入门helloWord程序,来介绍一下RabbitMQ的java客户端的简单使用、怎么创建连接声明队列、怎么发送消息、怎么接收消息等,这样可以对客户端的使用有个大概的了解,有助于后面的学习。概述前面介绍过RabbitMQ的官方文档非常丰富,当然会有对应的入门教程供大家参考,其地址为 http://www.rabbitmq.com/getstarted.ht...原创 2019-02-27 23:20:49 · 898 阅读 · 2 评论 -
(3)RabbitMQ安装与配置web管理页面
这一节我们将会在Linux上安装配置单机版的RabbitMQ,并且会介绍一下如何启动关闭服务、查看服务状态等命令,另外还会简单介绍一下web管理页面的配置使用方式。前言这里所介绍的是在Linux上安装的,在Linux上安装配置RabbitMQ还是遇到了不少坑的,其实主要是erlang的安装及配置,一般如果erlang安装配置正确了,后面RabbitMQ的安装还是比较简单的,网上关于Rabb...原创 2019-02-24 22:12:06 · 2094 阅读 · 3 评论 -
(2)RabbitMQ基础概念及工作流程详解
上一节中我们对MQ做了一个概要介绍,这一节开始我们选取RabbitMQ开始进行学习,本节将会RabbitMQ做个简单介绍,并且会对其常见的基础概念做个讲解,最后会简单介绍一下RabbitMQ的工作流程。RabbitMQ介绍RabbitMQ 是采用Erlang 语言实现AMQP (Advanced Message Queuing Protocol ,高级消息队列协议)的消息中间件,它最初起源...原创 2019-02-21 21:24:08 · 4035 阅读 · 3 评论 -
(1)消息队列概述
本节介绍从本节开始,将会开启一个新的系列MQ(消息队列),在目前微服务越来越流行的情况下,MQ的使用也越来越广泛了。在这个MQ系列博客里面,将会介绍rabbitmq的安装配置、客户端使用、几种使用方式、与spring及springboot的整合、消息可靠性传输、高可用集群搭建等。本节,会介绍一下消息队列的概念,为什么要使用消息队列,常见的MQ对比等等。消息消息(Message) 是指在...原创 2019-02-20 22:11:41 · 857 阅读 · 0 评论