RabbitMQ
文章平均质量分 73
AlvinUnity
这个作者很懒,什么都没留下…
展开
-
消息积压、丢失、重复解决方案
如何处理消息丢失消息发送出去,由于网络问题没有抵达服务器做好容错方法(try-catch),发送消息可能会网络失败,失败后要有重试机制,可记录到数据库,采用定期扫描重发的方式做好日志记录,每个消息状态是否都被服务器收到都应该记录,可以创建一张关于消息的数据表,存到数据库里CREATE TABLE `mq_message` (`message_id` char(32) NOT NULL,`content` text,`to_exchane` varchar(255) DEFAULT NU原创 2021-07-24 23:51:37 · 418 阅读 · 0 评论 -
7. RabbitMQ 延时队列
延时队列场景比如这个库存锁成功了,我们害怕订单后续操作失败了,导致库存没法回滚,我们库存要自己解锁,那么可以把锁成功的消息,先发给消息队列,但是让消息队列先暂存一会儿。比如我们存上三十分钟,因为我们现在的订单有可能是成功了,也有可能是失败。无论是成功失败,我们三十分钟以后,再对订单进行操作,比如订单不支付,我们都给它关了。所以三十分钟以后订单肯定就见分晓了。四十分钟以后我们把这个消息再发给解锁库存服务,解锁库存服务,一看这个订单早都没有了,或者订单都没有支付,被人取消了。它就可以把当时锁的库存原创 2021-07-23 10:50:29 · 552 阅读 · 3 评论 -
1. MQ、队列、RabbitMQ使用场景
MQ全称 Message Queue,被称为消息队列回顾队列队列,类似于一种 List 结构,专门来存储数据的队列如果要往队列中存数据的话可以从队头中存,1先进,存到队列中就是这样:3 -> 2 -> 1,从队尾取的时候,1先出,结果就是这样:1 -> 2 -> 3,这是很典型的先进先出队列如果存的方式与上面一样:3 -> 2 -> 1,而取的时候从队头取,3先出,结果就变成了这样:3 -> 2 -> 1,这就是先进后出如果队头、队尾都可以放原创 2021-07-16 12:14:25 · 381 阅读 · 2 评论 -
6. RabbitMQ消息确认机制
RabbitMQ消息确认机制-可靠抵达在分布式系统中,比如现在有很多微服务,微服务连接上消息队列服务器,其它微服务可能还要监听这些消息,但是可能会因为服务器抖动、宕机,MQ 的宕机、资源耗尽,以及无论是发消息的生产者、还是收消息的消费者,它们的卡顿、宕机等各种问题,都会导致消息的丢失,比如发送者发消息的时候,给弄丢了 ,看起来消息是发出去了,MQ网络抖动没接到, 或者MQ接到了,但是它消费消息的时候,因为网络抖动又没拿到,等等各种问题所以在分布式系统里面,一些关键环节,我们需要保证消息一定不能不丢失,原创 2021-07-16 14:54:34 · 238 阅读 · 0 评论 -
5. Spring Boot整合RabbitMQ
Spring Boot整合RabbitMQ以谷粒商城的订单服务为例导入依赖 <!--RabbitMQ--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>添加配置spring: rabbi原创 2021-07-16 14:52:36 · 145 阅读 · 0 评论 -
4. RabbitMQ-Exchange(交换机)
Exchange(交换机)Exchange分发消息时根据类型的不同分发策略有区别,目前共四种类型:direct:直接fanout:广播,topic:主题,就是发布订阅那种模式headers :headers 匹配 AMQP 消息的 header 而不是路由键,headers 交换器和 direct 交换器完全一致,但性能差很多,目前几乎用不到了,所以直接看另外三种类direct、header 是一致的,它们都是JMS中说的点对点通信方式实现fanout、topic则是发布订阅的一些实现交原创 2021-07-16 14:50:20 · 241 阅读 · 0 评论 -
3. Docker安装RabbitMQ
Docker安装RabbitMQ# 运行,第一次没安装会自动安装docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:management# 开机自启docker updata rabbitmq --restart=always4369, 25672 (Erlang发现&集群端口)5672,原创 2021-07-16 14:47:53 · 157 阅读 · 0 评论 -
2. RabbitMQ概述、工作流程、运行机制
RabbitMQ概述RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue Protocol)的开源实现。1、大多应用中,可通过消息服务中间件来提升系统异步通信、扩展解耦的能力2、消息服务中两个重要概念消息代理(message broker)和目的地(destination)消息代理:指的是一个代理代替我们发送、接收消息,简单理解就是,安装了消息中间件的服务器,发消息得用它发,接收消息也得连上它,才能拿到目的地:指消息的目标位置发消息的整原创 2021-07-16 14:46:05 · 436 阅读 · 0 评论