![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
RabbitMQ消息队列
文章平均质量分 91
RabbitMQ消息队列
白鸽呀
这个作者很懒,什么都没留下…
展开
-
RabbitMQ幂等性的主流解决方案
幂等性是什么?简单来说就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的。我们可以借鉴数据库的乐观锁机制来举个例子首先为表添加一个版本字段version在执行更新操作前呢,会先去数据库查询这个version然后执行更新语句,以version作为条件,例如:UPDATE T_REPS SET COUNT = COUNT -1,VERSION =VERSION + 1 WHERE VERSION = 1如果执行更新时有其他人先更新了这张表的数据,那么这个条件就不生效转载 2021-08-29 17:17:19 · 1154 阅读 · 0 评论 -
rabbitmq 使用与理解全流程
1、什么是MQMQ(message queue),从字面意思上看消息排队,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是message ,MQ还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不用依赖其他服务2、为什么要使用MQ1、流量消峰如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒后就能返回结果。但是在高峰期原创 2021-07-15 09:59:42 · 702 阅读 · 0 评论 -
rabbitmq集群,负载均衡,Federation Exchange
RabbitMQ集群1、为什么使用集群最开始我们介绍了如何安装及运行 RabbitMQ 服务,不过这些是单机版的,无法满足目前真实应用的要求。如果 RabbitMQ 服务器遇到内存崩溃、机器掉电或者主板故障等情况,该怎么办?单台 RabbitMQ 服务器可以满足每秒 1000 条消息的吞吐量,那么如果应用需要 RabbitMQ 服务满足每秒 10 万条消息的吞吐量呢?购买昂贵的服务器来增强单机 RabbitMQ 务的性能显得捉襟见肘,搭建一个 RabbitMQ 集群才是解决实际问题的关键.2、搭建原创 2021-07-15 09:51:06 · 612 阅读 · 0 评论 -
rabbitmq幂等性,优先级队列,惰性队列
14、RabbitMQ幂等性用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常, 此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱了,流水记录也变成了两条。在以前的单应用系统中,我们只需要把数据操作放入事务中即可,发生错误立即回滚,但是再响应客户端的时候也有可能出现网络中断或者异常等等1、消息重复消费消费者在消费 MQ 中的消息原创 2021-07-15 09:43:08 · 420 阅读 · 0 评论 -
rabbitmq发布确认高级
发布确认高级(异步回调)在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败, 导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢? 特别是在这样比较极端的情况,RabbitMQ 集群不可用的时候,无法投递的消息该如何处理呢1、springboot 进行发布确认1、队列和交换机@Configurationpublic class ConfirmConfig { public s原创 2021-07-15 09:40:04 · 224 阅读 · 0 评论 -
rabbitmq延迟队列
延迟队列1、概念延时队列,队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望在指定时间到了以后或之前取出和处理,简单来说,延时队列就是用来存放需要在指定时间被处理的元素的队列。2、使用场景1、订单在十分钟之内未支付则自动取消2、新创建的店铺,如果在十天内都没有上传过商品,则自动发送消息提醒。3、用户注册成功后,如果三天内没有登陆则进行短信提醒。4、用户发起退款,如果三天内没有得到处理则通知相关运营人员。5、预定会议后,需要在预定的时间点前十分钟通知各个与会人员参加会原创 2021-07-15 09:29:02 · 289 阅读 · 0 评论 -
rabbitmq死信队列
死信队列先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到queue 里了,consumer 从 queue 取出消息进行消费,但某些时候由于特定的原因导致 queue 中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。应用场景:为了保证订单业务的消息数据不丢失,需要使用到 RabbitMQ 的死信队列机制,当消息消费发生异常时,将消息投入死信队列中.还有比原创 2021-07-15 09:23:18 · 284 阅读 · 0 评论 -
rabbitmq交换机
交换机1、Exchange概念RabbitMQ 消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列。实际上,通常生产者甚至都不知道这些消息传递传递到了哪些队列中。相反,生产者只能将消息发送到交换机(exchange),交换机工作的内容非常简单,一方面它接收来自生产者的消息,另一方面将它们推入队列。交换机必须确切知道如何处理收到的消息。是应该把这些消息放到特定队列还是说把他们到许多队列中还是说应该丢弃它们。这就的由交换机的类型来决定。1、Exchanges 的类型直接(direct)原创 2021-07-15 09:17:38 · 1378 阅读 · 0 评论 -
rabbitmq发布确认
发布确认1、发布确认原理生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始),一旦消息被投递到所有匹配的队列之后,broker 就会发送一个确认给生产者(包含消息的唯一 ID),这就使得生产者知道消息已经正确到达目的队列了。如果消息和队列是可持久化的,那么确认消息会在将消息写入磁盘之后发出,broker 回传给生产者的确认消息中 delivery-tag 域包含了确认消息的序列号,此外 broker 也可以设原创 2021-07-15 09:09:25 · 953 阅读 · 0 评论 -
rabbitmq工作队列
8、work queue(工作队列)工作队列(又称任务队列)的主要思想是避免立即执行资源密集型任务,而不得不等待它完成。相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台运行的工作进程将弹出任务并最终执行作业。当有多个工作线程时,这些工作线程将一起处理这些任务。工作队列(work queue)是采用多个工作的线程,接收处理从队列中出来的大量消息,避免一个工作线程(一个消费者)接收处理大量的消息,因为单一处理速度肯定慢1、队列的轮询分发消息机制(相对公平的消费模式)1、启动两个原创 2021-07-15 09:05:48 · 489 阅读 · 0 评论 -
RabbitMQ理解与基本使用
1、什么是MQMQ(message queue),从字面意思上看消息排队,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是message ,MQ还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不用依赖其他服务2、为什么要使用MQ1、流量消峰如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒后就能返回结果。但是在高峰期原创 2021-07-15 08:46:45 · 773 阅读 · 0 评论