一个网站的建设需要哪些流程/品牌全网推广

一个网站的建设需要哪些流程,品牌全网推广,佛山手机网站建设公司,为什么选php语言做网站专栏导航 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、MQ数据持久化 1.交换机持久化 2.队列持久化 3.消息持久化 4.生产者确认机制 二、LazyQueue 1.LazyQueue模式介绍 2.管理控制台配置Lazy模式 3.代码配置Lazy模式 4.更新已有队列为lazy模式 总…

专栏导航

RabbitMQ入门指南

从零开始了解大数据


目录

专栏导航

前言

一、MQ数据持久化

1.交换机持久化

2.队列持久化

3.消息持久化

4.生产者确认机制

二、LazyQueue

1.LazyQueue模式介绍

2.管理控制台配置Lazy模式

3.代码配置Lazy模式

4.更新已有队列为lazy模式

总结


前言

RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了MQ数据持久化、LazyQueue模式、管理控制台配置Lazy模式、代码配置Lazy模式、更新已有队列为lazy模式等内容。


一、MQ数据持久化

在消息队列(MQ)中,数据的持久化至关重要。如果MQ不能及时保存消息,可能会导致数据丢失。为了确保数据的可靠性,必须配置数据持久化。

1.交换机持久化

在RabbitMQ管理控制台新建交换机时可以配置交换机的Durability参数:

  • Durable:持久化模式
  • Transient:临时模式

代码声明交换机时,默认为持久化模式,DirectExchange源码:

    public DirectExchange(String name) {super(name);}public DirectExchange(String name, boolean durable, boolean autoDelete) {super(name, durable, autoDelete);}public DirectExchange(String name, boolean durable, boolean autoDelete, Map<String, Object> arguments) {super(name, durable, autoDelete, arguments);}

AbstractExchange源码(DirectExchange extends AbstractExchange):

    public AbstractExchange(String name) {this(name, true, false);}public AbstractExchange(String name, boolean durable, boolean autoDelete) {this(name, durable, autoDelete, (Map)null);}public AbstractExchange(String name, boolean durable, boolean autoDelete, Map<String, Object> arguments) {super(arguments);this.name = name;this.durable = durable;this.autoDelete = autoDelete;}

2.队列持久化

在RabbitMQ管理控制台新建队列时可以配置队列的Durability参数:

  • Durable:持久化模式
  • Transient:临时模式

代码声明队列时,默认为持久化模式,源码如下:

    public Queue(String name) {this(name, true, false, false);}public Queue(String name, boolean durable) {this(name, durable, false, false, (Map)null);}public Queue(String name, boolean durable, boolean exclusive, boolean autoDelete) {this(name, durable, exclusive, autoDelete, (Map)null);}public Queue(String name, boolean durable, boolean exclusive, boolean autoDelete, @Nullable Map<String, Object> arguments) {super(arguments);Assert.notNull(name, "'name' cannot be null");this.name = name;this.actualName = StringUtils.hasText(name) ? name : Base64UrlNamingStrategy.DEFAULT.generateName() + "_awaiting_declaration";this.durable = durable;this.exclusive = exclusive;this.autoDelete = autoDelete;}

3.消息持久化

在控制台发送消息的时候,可以通过配置消息的属性来实现消息的持久化。消息持久化是将消息保存在磁盘上,即使MQ重启,消息也不会丢失。在发送消息时,可以选择Delivery mode参数来配置消息的持久化属性。

查看消息:

4.生产者确认机制

在开启持久化机制以后,如果同时还开启了生产者确认,那么MQ会在消息持久化以后才发送ACK回执给生产者,进一步确保消息的可靠性。为了减少IO次数并提高性能,MQ并不会逐条将消息持久化到数据库,而是每隔一段时间批量进行持久化。因此,建议生产者确认全部采用异步方式,以避免ACK的延迟。

二、LazyQueue

1.LazyQueue模式介绍

在 RabbitMQ 的默认设置中,为了降低消息收发的延迟,它会将接收到的信息保存在内存中。然而,在某些特殊情况下,这种设置可能会导致消息积压。以下是几种可能导致消息积压的情况:

  • 消费者宕机或出现网络故障:当消费者无法正常处理消息时,RabbitMQ 将无法将消息传递给消费者,从而导致消息积压。
  • 消息发送量激增,超过了消费者处理速度:当消息发送速度超过消费者的处理速度时,消息将在 RabbitMQ 的队列中积压。
  • 消费者处理业务发生阻塞:如果消费者在处理消息时遇到业务阻塞,例如等待某些资源或进行耗时的操作,那么它可能会花费更长的时间来处理消息,从而导致消息积压。

当消息堆积问题出现时,RabbitMQ 的内存占用会逐渐增加,直到触发内存预警上限。此时,RabbitMQ 将开始将内存中的消息刷写到磁盘上,这个过程称为“PageOut”。“PageOut”过程会耗费一定的时间,并且会阻塞队列进程。因此,在这个过程中,RabbitMQ 将无法处理新的消息,导致生产者的所有请求都被阻塞。

为了解决这个问题,从 RabbitMQ 3.6.0 版本开始,引入了 Lazy Queues(惰性队列)模式。惰性队列具有以下特征:

  • 接收到消息后直接存入磁盘而非内存:在惰性队列中,消息在接收到后不会立即加载到内存中,而是直接存储在磁盘上。
  • 消费者要消费消息时才会从磁盘中读取并加载到内存(也就是懒加载):当消费者需要消费消息时,它才会从磁盘中读取消息并加载到内存中。这样可以避免在消费者不活跃时浪费内存资源。
  • 支持数百万条的消息存储:惰性队列支持大量的消息存储,即使在没有内存限制的情况下也能处理大量的消息。

在RabbitMQ 3.12 版本之后,LazyQueue 已经成为所有队列的默认格式。这种模式可以有效地解决消息积压问题,提高 RabbitMQ 的性能和稳定性。

2.管理控制台配置Lazy模式

在新建队列的时候,添加x-queue-mode=lazy参数设置队列为Lazy模式(RabbitMQ 3.12 版本之前):

3.代码配置Lazy模式

在使用Spring AMQP声明队列的时候,添加x-queue-mod=lazy参数设置队列为Lazy模式:

    @Beanpublic Queue lazyQueue() {// .lazy()开启Lazy模式return QueueBuilder.durable("lazy.queue").lazy().build();}

源码如下:

    public QueueBuilder lazy() {return this.withArgument("x-queue-mode", "lazy");}

基于注解来声明队列并设置为Lazy模式:

    @RabbitListener(queuesToDeclare = @Queue(name = "lazy.queue",durable = "true",arguments = @Argument(name = "x-queue-mode", value = "lazy")))public void listenLazyQueue(String msg){log.info("lazy.queue:{}", msg);}

4.更新已有队列为lazy模式

基于命令行设置policy实现将已有队列更新为lazy模式:

rabbitmqctl set_policy Lazy "^lazy-queue$" '{"queue-mode":"lazy"}' --apply-to queues
rabbitmqctlRabbitMQ的命令行工具
set_policy添加一个策略
Lazy策略名称
"^lazy-queue$"用正则表达式匹配队列的名字
'{"queue-mode":"lazy"}'设置队列模式为lazy模式
--apply-to queues策略的作用对象,是所有的队列

管理控制台配置policy(RabbitMQ 3.12 版本之前):


总结

RabbitMQ是一个开源的消息队列软件,旨在提供可靠的消息传递和消息队列功能。本文主要介绍了MQ数据持久化、LazyQueue模式、管理控制台配置Lazy模式、代码配置Lazy模式、更新已有队列为lazy模式等内容,希望对大家有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522767.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MaxCompute常用语句汇总(更新ing)

摘要&#xff1a; 收集一些MaxCompute常用命令。 点此查看原文&#xff1a;http://click.aliyun.com/m/41645/ 大数据计算服务(MaxCompute&#xff0c;原名ODPS&#xff0c;产品地址&#xff1a;https://www.aliyun.com/product/odps)是一种快速、完全托管的TB/PB级数据仓库解决…

290种零食大统计,谁能唤起80、90后的童年回忆?|数据会说话

戳蓝字“CSDN云计算”关注我们哦&#xff01;数据分析&#xff1a;喜欢果脯的朱小五内容撰写&#xff1a;只爱辣条的王小九本文转自公众号『凹凸数读』1块钱能买到什么&#xff1f;对于80、90后的童年来讲&#xff0c;1块钱是4根冰棍&#xff0c;是10张辣片&#xff0c;是两包双…

php socket主动推送消息,PHP使用WebSocket主动推送【微信小程序接收】

WebSocket.jpegWebsocket是一种服务端和客户端可以持久连接的通信协议&#xff0c;我们可以利用WebSocket的特性实现服务器主动向客户端推送消息的功能。这里我们用TP5.1框架结合Workerman来做演示首先用Composer下载TP5.1框架composer create-project topthink/think5.1.* tp5…

EDAS再升级!全面支持Spring Cloud应用

摘要&#xff1a; 近日&#xff0c;阿里中间件&#xff08;Aliware&#xff09;的企业级分布式应用服务EDAS宣布再次升级&#xff0c;全面支持Spring Cloud应用。 点此查看原文&#xff1a;http://click.aliyun.com/m/41644/ 近日&#xff0c;阿里中间件&#xff08;Aliware&am…

微博宕机复盘:什么样的技术架构,可支持80个明星并发出轨?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 张蓝予编辑 | 苏琦6月27日晚间&#xff0c;范冰冰李晨宣布分手&#xff0c;瞬间亿级的访问量&#xff0c;让微博再一次“崩溃”&#xff1a;范冰冰账号评论区无法加载&#xff0c;搜索“范冰冰李晨”显示失败。微博曾经夸下海…

flowable 动态多实例

<?xml version"1.0" encoding"UTF-8"?> <definitions xmlns"http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd"http://www.w3.org/2001/XMLSchema&quo…

为什么MaxCompute采用列式存储?列式存储和行式存储的主要区别在哪

摘要&#xff1a; 1 为什么要按列存储 列式存储(Columnar or column-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是如何组织表(翻译不好&#xff0c;直接抄原文了)&#xff1a; Row-based storage stores atable in a sequence …

Hive精华问答 | Hive和传统数据库有什么不同?

Hive是一个数据仓库基础工具&#xff0c;它是建立在Hadoop之上的数据仓库&#xff0c;在某种程度上可以把它看做用户编程接口&#xff08;API&#xff09;&#xff0c;本身也并不存储和处理数据&#xff0c;依赖于HDFS存储数据&#xff0c;依赖MR处理数据。它提供了一系列对数据…

MaxCompute SQL原理解析及性能调优

摘要&#xff1a; 分享内容 介绍了ODPS SQL的基于mapreduce是如何实现的及一些使用小技巧&#xff0c;回顾了mapreduce各个阶段可能产生的问题及相应的处理方法&#xff0c;同时介绍了一些应对数据倾斜的处理方法&#xff0c;最后介绍了一些关于数据集构造、特征选择的技巧帮助…

flowable用户组的处理

背景 flowable有自己的用户账号信息&#xff0c;用户信息&#xff0c;用户组信息&#xff0c;其实这些用户信息都我们系统可能都存在&#xff0c;那么我们如何去使用一份数据呢&#xff1f; 1.我们可以建立视图直接取我们的组织信息&#xff0c;这个可以参考相关的文档 2.我们…

微软 SQL Server 2019 将免费支持 Java;Rancher Labs获2500万美元融资;腾讯云进军日本市场……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go “2019世界计算机大会”新闻…

玩 High API 系列之:实现钉钉Ding功能

摘要&#xff1a; 钉钉是企业IM市场上的领先者&#xff0c;深受中小企业客户的喜欢&#xff0c;就再几天前刚刚宣布用户数超过1亿&#xff01;在钉钉里面有个特别实用的功能&#xff0c;那就是Ding一下&#xff0c;如果你发的消息特别紧急&#xff0c;可以直接通过短信、电话等…

flowable中动态显示节点的审批人信息

1、上面的流程图当任务还没有到的节点&#xff0c;用户想看看节点的人的信息&#xff0c;如果我们常规的是不能实现的。 2、思路就是我们取出节点的表达式&#xff0c;然后用我们流程实例的变量来给他翻译出来即可&#xff0c;如何做呢&#xff1f; 2.1、通过流程实例id查出历…

InfoComm China 2019,揭秘“NVIDIA风格”数据科学!

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者|刘晶晶在炫酷的复联4电影中&#xff0c;超过2600个特效镜头层出不穷&#xff0c;意味着电影的后期剪辑与特效对于硬件设备的要求越发提高&#xff0c;毕竟特效制作着力依赖画面渲染。我们了解&#xff0c;在没有GPU之前&#x…

玩 High API 系列之:智能云相册

摘要&#xff1a; 相册是手机中的一个非常重要的功能&#xff0c;然而目前的大部分手机的相册非常普通&#xff0c;仅仅有查看照片&#xff0c;编辑相片的等几个简单功能。我们来看看如果在API时代&#xff0c;如何通过调用API快速实现一个好玩的&#xff0c;具备智能分析识别、…

玩 High API 系列好文:UGC内容检测、视频智能、拍照翻译、懂天气的草地喷水头...

摘要&#xff1a;玩 High API 系列好文&#xff1a;UGC内容检测、视频智能、拍照翻译、懂天气的草地喷水头 导读&#xff1a;初创公司可以利用API来解决问题。了解更多场景如何玩High API&#xff1f;如何将API变现&#xff1f;请下载阿里云 API Playbook&#xff08;免费下载&…

java项目功能详情介绍,JAVAEE—spring的详细介绍

一、spring介绍1.三层架构中spring位置2.spring一站式框架正是因为spring框架性质是属于容器性质的.容器中装什么对象就有什么功能.所以可以一站式.不仅不排斥其他框架,还能帮其他框架管理对象.aop支持、ioc思想、spring jdbc、aop 事务、junit 测试支持二、spring搭建1.导包日…

乘势而起,走进2019年风口“边缘计算”

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者| pasca原创 | 蛋蛋团&#xff08;ID&#xff1a;dandan_tuan&#xff09;5G火了&#xff0c;也带火了边缘计算。2019年3月&#xff0c;一篇《5G风口扩散&#xff0c;超清视频边缘计算概念崛起》的文章意外走红&#xff0c;直接…

详解SLB、EIP、NAT网关之间区别, 合理选择云上公网入口

摘要&#xff1a; 概述 阿里云的公网入口产品共有三个&#xff0c;SLB、EIP、NAT网关&#xff0c;这几个产品都可以作为云上资源的公网入口&#xff0c;他们之间有何区别&#xff0c;又分别应该在什么场景下使用呢&#xff1f; 点此查看原文&#xff1a;http://click.aliyun.co…

Hadoop常见问题 | Hadoop能干什么?

戳蓝字“CSDN云计算”关注我们哦&#xff01;我们很荣幸能够见证Hadoop十几年间经历了从无到有&#xff0c;再到称王。感动于技术的日新月异时&#xff0c;希望通过本篇有问有答&#xff0c;带大家解决Hadoop的常见问题。1Q&#xff1a; Hadoop 的发展历史A&#xff1a;2Q&…