【云原生进阶之PaaS中间件】第四章RabbitMQ-4.2-进阶应用

1 RabbitMQ的高级应用

1.1 死信队列

        死信队列(DLX,Dead-Letter-Exchange),利用DLX,当消息在一个队列中变成无法被消费的消息(dead message)之后,它能被重新publish到另一个Exchange,这个Exchange就是DLX。

消息变成死信的几种情况:

1、 消息被拒绝(channel.basicReject/channel.basicNack)并且request=false;

2、 消息在队列的存活时间超过设置的生存时间(TTL)时间;

3、 队列达到最大长度(队列满了,无法再添加数据到队列中)。

        DLX也是一个正常的Exchange,和一般的Exchange没有区别,它能在任何的队列上被指定,实际上就是设置某个队列的属性。

死信队列的设置:

1、首先,需要设置死信队列的Exchange和queue,然后进行绑定;

2、然后,我们进行正常声明交换机、队列、绑定,只不过我们需要在队列机上一个参数即可:arguments.put(“x-dead-letter-exchange”,”dlx.exchange”);这样消息在过期、被拒绝、队列在达到最大长度时,消息就可以直接路由到死信队列。

1.2 延迟队列

        基于rabbitmq_delayed_message_exchange插件,实现延迟队列效果。它是一种新的交换类型,该类型消息支持延迟投递机制消息传递后并不会立即投递到目标队列中,而是存储在mnesia(一个分布式数据系统)表中,当达到投递时间时,才投递到目标队列中。使用延迟队列,可以有效解决定时任务带来的系统压力以及业务处理时效性等问题。

应用场景:

  • 订单在30分钟之内未支持,则自动取消订单
  • 工单在60分钟之内仍未处理,则发送消息提醒
  • 预定会议室后,在预定时间前10分钟,通知提醒各参会人员
  • ………………………………

1.3 队列幂等性

        幂等性的实质是:对于一个资源,不管你请求一次还是请求多次,对该资源本身造成的影响应该是相同的,不能因为重复相同的请求而对该资源重复造成影响。注意关注的是请求操作对资源本身造成的影响,而不是请求资源返回的结果。

        MQ消费者的幂等性一般使用全局ID或者写个唯一标识(比如流水号/时间戳/UUID/订单号)来判断该消息是否已消费过,也可以利用redis执行setnx命令,天然具有幂等性,从而实现不重复消费(推荐使用redis)。

1.4 优先级队列

        优先级队列,也就是具有高优先级的队列,优先级高的消息具备优先被消费的特权。通过队列的 x-max-priority 参数设置队列的最大优先级,之后在发送消息时通过 priority 属性再设置当前消息的优先级。优先级应在 0 和 255 之间,推荐1 ~ 10。

  • 优先级默认最低为0,最高为队列设置的最大优先级;
  • 对于单条消息来谈优先级是没有什么意义的。假如消费者的消费速度大于生产者的速度且Broker中没有消息堆积的情况下,对发送的消息设置优先级就没有什么意义,因为生产者刚发完一个消息就被消费者消费了,相当于Broker中至多只有一条消息。

1.5 惰性队列

        惰性队列会尽可能地将消息存入磁盘中,而在消费者消费消息时才会被加载到内存中,它支持更多的消息存储。

        队列具备两种模式:default 和 lazy。默认的为 default 模式,在队列声明的时候可以通过“x-queue-mode”参数来设置队列的模式,取值为“default”和“lazy”。

参考链接

rabbitmq专栏

史上最透彻的 RabbitMQ 可靠消息传输实战 - 掘金

RabbitMQ系列(四)RabbitMQ事务和Confirm发送方消息确认——深入解读 - 掘金

RabbitMQ原理及实现_rabbitmq实现-CSDN博客

RabbitMQ的工作模式及原理

RabbitMQ如何保证消息的可靠性投递与消费?

Linux安装Erlang和RabbitMQ详细步骤

rabbitmq详解-CSDN博客

RabbitMQ(一)——常见消息中间件

深入理解:RabbitMQ的前世今生

RabbitMQ技术详解-架构

透彻rabbitmq - 知乎

消息队列的使用场景是怎样的? - 知乎

RabbitMQ原理 - 知乎

RabbitMQ 原理解析

RabbitMQ原理详解_rabbitmq工作原理-CSDN博客

RabbitMQ 基本概念介绍_rabbitmq基本概念-CSDN博客

RabbitMQ系列二(构建消息队列机制)_rabbitmq系列二(构建消息队列)-CSDN博客

RabbitMQ消息队列(二)-RabbitMQ消息队列架构与基本概念

RabbitMQ基础概念详解

干货:RabbitMQ核心概念及工作原理

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 云计算基础知识包括以下内容: 1. Hadoop:是一个开源的分布式计算框架,用于处理大规模数据集的存储和处理。 2. Spark:是一个快速、通用、可扩展的大数据处理引擎,支持分布式数据处理和机器学习等应用。 3. MapReduce:是一种分布式计算模型,用于处理大规模数据集的并行计算。 4. HBase:是一个分布式的、面向列的NoSQL数据库,用于存储和管理大规模结构化数据。 5. IaaS:是基础设施即服务,提供虚拟化的计算、存储、网络等基础设施资源。 6. PaaS:是平台即服务,提供应用程序开发和部署所需的平台环境和工具。 7. SaaS:是软件即服务,提供基于云计算的应用程序服务,用户可以通过网络访问和使用这些应用程序。 ### 回答2: 云计算是指利用互联网来提供计算、存储、应用等服务的一种技术,它具有高效、可扩展性强、灵活性高、安全性好的特点。在云计算领域,Hadoop、Spark、MapReduce、Hbase、IaaS、PaaS、SaaS是非常重要的概念。 1、Hadoop Hadoop是由Apache基金会开发的,用于分布式存储和分析大型数据集的开源软件框架。它主要解决了海量数据的存储和处理问题,将数据切分存储在多台机器上,通过分布式计算的方式实现对数据的快速分析和处理,使得海量数据的处理速度大大提高。 2、Spark Spark是一种基于内存的分布式计算引擎,它支持多种编程语言,比如Java、Scala和Python等。Spark在处理数据的效率上优于Hadoop,其核心优点在于强大的内存计算和快速的数据处理能力。Spark还支持机器学习、数据挖掘、图形计算等应用场景。 3、MapReduce MapReduce是一种分布式计算框架,它可以实现对大规模数据的分布式计算和处理。MapReduce是由Google公司提出的,用于支持Web搜索引擎中的大规模数据处理,后来被Hadoop框架采纳。MapReduce将数据分成很多个小块,然后将小块分别传到不同的机器上进行处理,最后将结果进行合并。 4、Hbase Hbase是一款基于Hadoop的分布式数据库系统,它专门用于存储和管理大型数据集中的海量数据。Hbase采用列族式存储结构,数据可以按列存储并且可以进行快速的数据查询,利用Hbase可以处理TB级别的数据。 5、IaaS IaaS,即基础设施即服务(Infrastructure as a Service),是云计算的一种基本服务模式。它为用户提供网络、安全、计算能力和存储资源等基础服务,用户可以自由地购买所需的计算资源,通过自己的系统管理工具对计算资源进行管理。 6、PaaS PaaS,即平台即服务(Platform as a Service),是为开发者提供的一种云服务模式。PaaS提供了一个完整的开发环境,包括开发工具、数据库、中间件、操作系统等,使得开发者可以专注于应用程序的开发而不需关注底层的系统和软件平台。 7、SaaS SaaS,即软件即服务(Software as a Service),是云计算中最为普及的一种服务模式。SaaS通过互联网向用户提供各种类型的软件应用服务,例如企业管理、营销、在线办公、客户关系等服务,用户可以通过互联网随时随地使用这些应用软件而无需购买和维护实体硬件和软件。 ### 回答3: 云计算是当今信息技术的一项重要领域,因其优异的性能、灵活性和可扩展性而备受欢迎。其中,Hadoop、Spark、MapReduce、HBase、IaaS、PaaS、SaaS 可谓云计算中的重要基础知识,以下对它们做进一步介绍: 1. Hadoop: Hadoop 是当今最流行的大数据分析工具之一,其底层原理是基于分布式数据存储和处理的 MapReduce 算法。通过 Hadoop,用户可以将大数据分割成许多小的任务进行并行处理,从而大大提高数据处理的效率。 2. Spark: Spark 是另一个重要的大数据处理框架,属于基于内存的计算平台。Spark 采用了更为高效的内存计算方式来处理大数据,这样就可以将数据直接读入内存进行处理,提高处理速度。 3. MapReduce: MapReduce 算法是大数据领域中一种基于分布式计算的数据处理方法,它将大数据分成小数据块,再通过多台计算机上的 Map 和 Reduce 两个步骤进行处理,最终得出结论。 4. HBase: HBase 是一种基于 Hadoop 的分布式、可扩展的 NoSQL 数据库系统,它允许对海量数据进行非结构化的访问和处理,同时具有高可靠性、高可用性以及高性能等优势。 5. IaaS: IaaS 指的是基础设施即服务,是云计算提供商为用户提供基础设施的一种服务模式,用户可以根据自己的需求租用虚拟机、存储等基础设施,并可以根据自己的需求灵活调整。 6. PaaS: PaaS 指的是平台即服务,也是云计算提供商向用户提供服务的一种模式,使用 PaaS 的用户可以通过云计算平台构建、部署、测试和扩展应用程序。 7. SaaS: SaaS 指的是软件即服务,它是一种基于云计算的软件提供方式,对于用户来说,无需安装和维护软件,只需通过互联网即可使用。SaaS 具有灵活性和成本效益,因此备受欢迎。 以上,就是云计算五大基础知识以及 IaaS、PaaS、SaaS 这三种服务模式的简单介绍。云计算技术更新迭代速度快,如今还出现了更多的先进云计算技术和应用案例,这些都将为用户提供更为高效、灵活和安全的服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江中散人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值