RabbitMQ系列教程
RabbitMQ系列教程
warybee
有的鱼是永远关不住的,因为它们属于天空
展开
-
RabbitMQ快速入门到实战系列文章
RabbitMQ系列教程之前写了一些RabbitMQ的文章,这里做一下汇总。1、RabbitMQ Windows/CentOS7平台安装手册2、RabbitMQ中一些重要概念3、RabbitMQ Exchange类型之Direct Exchange4、RabbitMQ Exchange类型之Topic Exchange5、RabbitMQ Exchange类型之fanout Exchange6、RabbitMQ Exchange类型之headers Exchang7、Confirm消息确认机原创 2020-12-10 14:49:04 · 142 阅读 · 0 评论 -
RabbitMQ系列教程(十四)Spring Boot整合RabbitMQ
本文目录1、构建消息生产者2、构建消息消费者3、消息发送与监听3.1、消息生产者3.2、消息消费者4、Message 内容的JSON序列化与反序列化4.1、消费者MessageConverter配置4.2、生产者MessageConverter配置1、构建消息生产者创建一个Spring Boot消息生产者(mqproducer)项目,在POM文件中引入依赖<parent> ...原创 2019-12-01 21:49:50 · 1104 阅读 · 0 评论 -
RabbitMQ系列教程(十三)Spring AMQP API详解
Spring AMQP是基于Spring的核心概念,对RabbitMQ底层API的封装。Spring AMQP为发送消息和接收消息提供了一个高级抽象的 “模板”(RabbitAdmin、RabbitTemplate、SimpleMessageListenerContainer、声明性配置等)。原创 2019-11-27 14:35:40 · 1914 阅读 · 0 评论 -
RabbitMQ系列教程(十二)RabbitMQ死信队列(Dead Letter Exchanges)
在死信队列(Dead Letter Exchanges)当消息在一个队列中变为死信后,它被重新发送到另一个Exchange。在什么情况下会出现死信消息未被签收,在消费端使用了 basic.reject 或 basic.nack ,并且requeue设置为false消息过期(TTL)消息队列达到了最大长度实际应用当RabbitMQ出现死信,可能会导致业务逻辑错误,比如下订单后修改库...原创 2019-11-20 17:52:11 · 1773 阅读 · 0 评论 -
RabbitMQ系列教程(十一)RabbitMQ队列/消息的生存时间(Time-To-Live)
概述RabbitMQ支持队列的过期时间设置,从消息入队列开始,只要超过了队列的超时时间配置,消息就会被自动清除。同时RabbitMQ也支持设置消息的生存时间,在发送消息时通过headers参数可以设置。设置队列的生存时间(TTL)在消费端声明队列时,指定x-message-ttl参数,设置生存时间Map<String, Object> args = new HashMap<...原创 2019-11-20 17:21:05 · 1452 阅读 · 1 评论 -
RabbitMQ系列教程(十)ACK确认机制保障消费端消息的可靠性
概述在实际项目中如果业务代码出现BUG,消费端进行消费的时候,我们可以记录错误日志,然后在消费端进行消息补偿。如果出现服务器宕机问题,那就需要手工ACK,然后在生产端进行消息补偿。生产端消息补偿可以使用RabbitMQ的confirm机制。ACK机制与消费端消息补偿机制把channel.basicConsume(...)方法的autoAck参数改为falsechannel.basi...原创 2019-11-20 16:48:31 · 1959 阅读 · 0 评论 -
RabbitMQ系列教程(九)RabbitMQ消费端限流
概述如果RabbitMQ服务器上有成千上万条未处理的消息,如果我们这时我们运行消费端,一瞬间就会有巨量的消息推送过来,这个时候接收者因为流量的剧增,超过了自己系统本身所能处理的最大峰值,如果没有对消息做限流措施,接收服务器可能就会内存溢出,造成服务器不可用。RabbitMQ限流机制RabbitMQ提供了QOS限流功能,在非自动确认消息的前提下,如果有一定数目的未被确认前,不消费新的消息。在...原创 2019-11-20 16:01:56 · 666 阅读 · 0 评论 -
RabbitMQ系列教程(八)RabbitMQ中ReturnListener的使用
概述ReturnListener用于处理一些不可路由的消息(比如因失误把routeKey或交换机名称写错)。开启Return消息机制basicPublish(...) 方法的参数mandatory 设置为true,当发送消息不可达时,会执行ReturnListener,如果为false则会删除该消息添加监听事件 channel.addReturnListener代码实现生产者...原创 2019-11-20 11:44:07 · 1382 阅读 · 0 评论 -
RabbitMQ系列教程(七)Confirm消息确认机制保障生产端消息的可靠性
概述消息确认是指当生成者发送消息后,如果Server接收到消息,则会给生产者一个应答。生产者接收应答,用来确认该消息是否正常发送到Server。在实际项目中,可以利用这一机制保障消息的可靠性投递,如果消息未发送成功,可以在监听事件中记录日志、重新发送消息等操作。开启Confirm消息确认机制在生产者的channel上开启确认机制: channel.confirmSelect();在c...原创 2019-11-20 11:27:33 · 4227 阅读 · 0 评论 -
RabbitMQ四种交换机(Exchange)类型
RabbitMQ常用的交换器类型有: fanout 、 direct 、 topic 、 headers 四种。原创 2019-11-18 18:06:28 · 667 阅读 · 0 评论 -
RabbitMQ系列教程(六)RabbitMQ Exchange类型之headers Exchange
headers Exchange介绍headers Exchange与Direct、topic、fanout不同,它时通过匹配AMQP消息的header而非路由键。headers Exchange与Direct Exchange类似,性能方面比后者查很多,所以在实际项目中用的很少,通过一张图来直观感受一下其工作流程Java代码实现生产者public static void main...原创 2019-11-18 17:52:20 · 2690 阅读 · 1 评论 -
RabbitMQ系列教程(五)RabbitMQ Exchange类型之fanout Exchange
fanout Exchange介绍不处理路由键,只需将队列绑定到交换机上,发送到交换机的消息都会被转发到与该交换机绑定的所有队列上。因为不处理路由键,所以fanout Exchange 速度最快原创 2019-11-18 16:55:42 · 1563 阅读 · 0 评论 -
RabbitMQ系列教程(四)RabbitMQ Exchange类型之Topic Exchange
Topic Exchange介绍多对多正则匹配,所有发送到Topic Exchange的消息被转发到匹配的RouteKey中指定Topic的Queue。其中符号#匹配一个或多个词,符号*只能匹配其后面的一个词,比如:user.# # 可以匹配到 user.add user.add.batchuser.* # 只能匹配到 user.add ,不能匹配到 user.add.batch下...原创 2019-11-18 16:19:01 · 1197 阅读 · 1 评论 -
RabbitMQ系列教程(三)RabbitMQ Exchange类型之Direct Exchange
Direct Exchange 一对一完全匹配,将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配原创 2019-11-17 22:49:49 · 1759 阅读 · 0 评论 -
RabbitMQ系列教程(二)RabbitMQ中一些重要概念
RabbitMQ,俗称“兔子MQ”,是目前非常热门的一款开源消息中间件,不管是互联网行业还是传统行业都广泛使用(最早是为了解决电信行业系统之间的可靠通信而设计)。原创 2019-11-17 21:44:06 · 567 阅读 · 0 评论 -
RabbitMQ系列教程(一)RabbitMQ Windows/CentOS7平台安装手册
RabbitMQ的安装需要首先安装Erlang,因为它是基于Erlang的VM运行的。RabbitMQ在Linux系统上需要的依赖:socat和logrotate,logrotate操作系统中已经存在了,只需要安装socat就可以了。原创 2019-11-14 22:18:12 · 552 阅读 · 0 评论