我的编程空间,编程开发者的网络收藏夹
学习永远不晚

浅谈消息队列的原理

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

浅谈消息队列的原理

什么是消息队列

这样的场景你一定不陌生:小王到M记点餐之后,服务员给了他一个号牌,并让他在柜台桌子前方等待叫号取餐。每个人都按照自己付款拿到的号牌顺序排队等叫号。即使店里人再多,也不会显得没有秩序。


在上述场景中,柜台其实就充当了一个消息队列(Message Queue)。小王等生产者把订餐的消息发送到柜台即消息队列里,又从其中取了餐即消费了消息,可以说这就是消息队列的一个完整走向——消息被发送到队列中,又成功被消费者消费。“消息队列”是在消息的传输过程中保存消息的容器,队列的主要目的是提供路由并保证消息的传递。如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。


一般来说,消息队列是一种异步的服务间通信方式,是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。使用较多的消息队列有ActiveMQ、RocketMQ、RabbitMQ、Kafka等。

分布式消息服务的原理

在消息队列的基础上,稳定可靠的消息队列服务——分布式消息服务应运而生。分布式消息服务(Distributed Message Service,简称DMS)是一项基于高可用分布式集群技术的消息中间件服务,提供普通队列、有序队列、Kafka队列、ActiveMQ、RabbitMQ,兼容HTTP、TCP、AMQP协议,为分布式应用提供低延迟、高并发的异步通信机制。其生产和消费消息的示意图如下图所示。

浅谈消息队列的原理
消息生产者即发送消息的一方,也叫消息发送者,发送消息到指定的消息队列中。生产者将消息M发送到队列中。消息M在队列中冗余分布,存在多个副本。



浅谈消息队列的原理
消费消息的一方,也叫消息接收者,通过调用消息服务的消费接口从队列中读取消息。消费者从队列中消费消息,获取到消息M。在消费者消费消息M期间,消息M仍然停留在队列中,但消息M从被消费开始的30秒内不能被该消费组再次消费,若在这30秒内没有被消费者确认消费完成,则DMS认为消息M未消费成功,将可以被继续消费。

浅谈消息队列的原理
消费者确认消息M消费完成,消息M将不能被该消费者所在消费组消费。消息M仍然保持在队列中,并且可以被其它消费组消费,消息在队列中的保留时间为至少72小时(除非队列被删除),72小时后将会被删除。



以上就是对分布式消息服务原理的浅析,在实际选型时,可以结合自身需求去考虑不同的消息队列产品。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

浅谈消息队列的原理

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

谈谈消息队列的设计与实现

消息队列是一种存储和传递消息的机制,用于实现应用程序之间的异步通信。它可以帮助解耦应用程序的组件,提高系统的可伸缩性和可靠性。消息队列的设计与实现需要考虑以下几个方面:1. 消息的存储方式:可以选择使用内存存储或磁盘存储。内存存储速度快,但
2023-09-21

redis中的消息队列

这期内容当中的小编将会给大家带来有关redis中的消息队列介绍,以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、认识消息队列1.1 消息队列概念“消息”是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字
2022-11-30

RabbitMQ队列中间件消息持久化 确认机制 死信队列原理

这篇文章主要介绍了消息队列中间件之RabbitMQ消息的持久化、确认机制、死信队列原理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-19

Springboot整合ActiveMQ实现消息队列的过程浅析

昨天仔细研究了activeMQ消息队列,也遇到了些坑,下面这篇文章主要给大家介绍了关于SpringBoot整合ActiveMQ的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2023-02-10

Golang中使用RabbitMQ实现消息队列的原理和实践

在Golang中使用RabbitMQ实现消息队列的原理和实践主要涉及以下几个方面:1. RabbitMQ介绍:RabbitMQ是一个开源的消息队列中间件,它基于AMQP(Advanced Message Queuing Protocol)协
2023-10-08

python—多进程的消息队列

消息队列消息队列是在消息的传输过程中保存消息的容器消息队列最经典的用法就是消费者 和生产者之间通过消息管道传递消息,消费者和生成者是不同的进程。生产者往管道写消息,消费者从管道中读消息操作系统提供了很多机制来实现进程间的通信,multipr
2023-01-31

Python中线程的MQ消息队列实现以及消息队列的优点解析

“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。相信对任何架构或应用来
2022-06-04

队列在PHP与MySQL中的消息积压和消息消费的处理方法

当网站系统涉及到大量并发操作时,往往需要处理大量的请求和消息,并确保消息的可靠传递。而消息队列则是一种高效、可靠的解决方案,可以有效地处理消息的积压和消费问题。本文将介绍队列在PHP与MySQL中的消息积压和消息消费的处理方法,并提供相应的
2023-10-21

消息队列的特点是什么

本篇内容主要讲解“消息队列的特点是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“消息队列的特点是什么”吧!什么是消息队列?消息队列( Message Queue )是一种进程间通信或同一进程
2023-06-04

redisstream实现消息队列的实践

本文主要介绍了redisstream实现消息队列的实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2022-11-13

Redis在消息队列中的妙用

Redis在消息队列中的妙用消息队列是一种常见的解耦架构,用于在应用程序之间传递异步消息。通过将消息发送到队列中,发送者可以在不等待接收者响应的情况下继续执行其他任务。而接收者可以在适当的时间从队列中获取消息并进行处理。Redis是一种常用
Redis在消息队列中的妙用
2023-11-07

关于消息队列如何保证消息的幂等性

这篇文章主要介绍了关于消息队列如何保证消息的幂等性,在分布式系统中,消息队列是一个常用的组件,用于解耦发送者和接收者之间的耦合,需要的朋友可以参考下
2023-05-18

队列在PHP与MySQL中的消息预处理和消息重试策略

引言:在现代网络应用中,消息队列作为一种重要的并发处理机制被广泛应用。队列能够将耗时的任务异步处理,从而提高应用的并发性能和稳定性。本文将介绍如何使用PHP与MySQL实现队列的消息预处理和消息重试策略,并提供具体的代码示例。一、消息队列的
2023-10-21

WCF消息队列的类型有几种

这篇文章主要介绍WCF消息队列的类型有几种,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!WCF经过长时间的发展,很多用户都很了解WCF了,这里我发表一下个人理解,和大家讨论讨论。WCF消息队列Message是由通信的
2023-06-17

编程热搜

目录