文章 2023-02-26 来自:开发者社区

RabbitMQ学习(十一):RabbitMQ 集群

一、集群1.1 为什么要使用集群前面我们介绍了如何安装及运行 RabbitMQ 服务,不过这些是单机版的,无法满足目前真实应用的 要求。如果 RabbitMQ 服务器遇到内存崩溃、机器掉电或者主板故障等情况,该怎么办?单台 RabbitMQ 服务器可以满足每秒 1000 条消息的吞吐量,那么如果应用需要 RabbitMQ 服务满足每秒 10 万条消息的吞 吐量呢?购买昂贵的服务器来增强单机 Ra....

RabbitMQ学习(十一):RabbitMQ 集群
文章 2023-02-26 来自:开发者社区

RabbitMQ学习(十):幂等性、优先级队列、惰性队列

一、幂等性1.1 概念用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。以支付为例,用户购买商品后支付,扣款成功,但是返回结果的时候网络异常, 此时钱已经扣了;用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱 了,流水记录也变成了两条。在以前的单应用系统中,我们只需要把数据操作放入事务中即可,发生错误 立即回滚,但是再响应客户端....

文章 2023-02-26 来自:开发者社区

RabbitMQ学习(十):发布确认高级

一、概述在生产环境中由于一些不明原因,导致 RabbitMQ 重启,在 RabbitMQ 重启期间生产者消息投递失败导致消息丢失,需要手动处理和恢复。在这样比较极端的情况,当RabbitMQ 集群不可用的时候,无法投递的消息该如何处理呢?如何才能进行 RabbitMQ 的消息可靠投递呢?二、发布确认 springboot 版本2.1 确认机制方案即引入缓存,将消息缓存下来,由定时任务对未成功发送....

RabbitMQ学习(十):发布确认高级
文章 2023-02-26 来自:开发者社区

RabbitMQ学习(九):延迟队列

一、延迟队列概念延时队列中,队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望 在指定时间到了以后或之前取出和处理。简单来说,延时队列就是用来存放需要在指定时间内被处理的 元素的队列。其实延迟队列就是死信队列的一种。二、延迟队列使用场景订单在十分钟之内未支付则自动取消新创建的店铺,如果在十天内都没有上传过商品,则自动发送消息提醒用户注册成功后,如果三天内没有登陆则进行短....

RabbitMQ学习(九):延迟队列
文章 2023-02-26 来自:开发者社区

RabbitMQ学习(八):死信队列

一、死信队列概述死信,顾名思义就是无法被消费的消息,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 queue 取出消息 进行消费,但某些时候由于特定的原因导致 queue 中的某些消息无法被消费,这样的消息如果没有 后续的处理,就变成了死信。有死信自然也有死信队列。应用场景:1、为了保证订单业务的消息数据不丢失,需要使用到 Rabbi....

RabbitMQ学习(八):死信队列
文章 2023-02-26 来自:开发者社区

RabbitMQ学习(七):交换器

〇、前言在之前的内容中,我们创建了一个工作队列。我们假设的是工作队列背后,每个任务都恰好交付给一个消 费者(工作进程)。在今天的内容中,我们将做一些完全不同的事情——我们将消息传达给多个消费者。这种模式 称为 “发布/订阅”。为了说明这种模式,我们将以一个简单的日志系统为例。它将由两个程序组成:第一个程序将发出日志消 息,第二个程序是消费者。其中我们会启动两个消费者,其中一个消费者接收到消息后把....

RabbitMQ学习(七):交换器
文章 2023-02-26 来自:开发者社区

RabbitMQ学习(六):发布确认

一、发布确认的原理生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的 消息都将会被指派一个唯一的 ID(从 1 开始),一旦消息被投递到所有匹配的队列之后,broker 就会发送一个确认给生产者(包含消息的唯一 ID),这就使得生产者知道消息已经正确到达目的队 列了,如果消息和队列是可持久化的,那么确认消息会在将消息写入磁盘之后发出,broker....

RabbitMQ学习(六):发布确认
文章 2023-02-26 来自:开发者社区

RabbitMQ学习(五):RabbitMQ持久化

一、持久化概念在上一章内容中我们已经看到了如何处理任务不丢失的情况,但是如何保障当 RabbitMQ 服务停掉后消 息生产者发送过来的消息不丢失呢?默认情况下 RabbitMQ 退出或由于某种原因崩溃时,它将忽视队列 和消息,除非告知它不要这样做。确保消息不会丢失需要做两件事:我们需要将队列和消息都标 记为持久化。二、实现持久化2.1 队列实现持久化如果要队列实现持久化,需要在声明队列的时候把 ....

RabbitMQ学习(五):RabbitMQ持久化
文章 2023-02-26 来自:开发者社区

RabbitMQ学习(四):消息应答

一、消息应答的概念消费者完成一个任务可能需要一段时间,如果其中一个消费者处理一个长的任务并仅只完成 了部分突然它挂掉了,会发生什么情况。RabbitMQ 一旦向消费者传递了一条消息,便立即将该消 息标记为删除。在这种情况下,突然有个消费者挂掉了,我们将丢失正在处理的消息。以及后续 发送给该消费这的消息,因为它无法接收到。为了保证消息在发送过程中不丢失,rabbitmq 引入消息应答机制,消息应答....

RabbitMQ学习(四):消息应答
文章 2023-02-22 来自:开发者社区

RabbitMQ学习(三):工作队列

一、工作队列原理工作队列(又称任务队列)的主要思想是避免立即执行资源密集型任务,而不得不等待它完成。相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台运行的工作进程将弹出任务并最终执行作业。当有多个工作线程时,这些工作线程将一起处理这些任务二、案例演示       在这个案例中我将启动两个工作线程、一个消息发送线程,看看这两个工作线程是如何工.....

RabbitMQ学习(三):工作队列

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐