JAVA-消息队列及分布式消息队列原理

原文章:https://www.cnblogs.com/middleware/p/9178734.html

一、什么是消息队列

消息队列是在消息的传输过程中保存消息的容器,队列的主要目的是提供路由并保证消息的传递。 如果发送消息时接受者不可用,消息队列会保留消息,知道可以成功传递消息。

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

二、分布式消息队列的原理

在消息队列的基础上,稳定可靠的消息队列服务----分布式消息服务应运而生。
分布式消息服务(DMS): 一项基于高可用分布式集群技术的消息中间件服务,提供普通队列、有序队列、kafka队列、ActiveMQ、RabbitMQ,兼容HTTP、TCP、AMQP协议,为分布式应用提供低延迟、高并发的异步通信机制。

消息传递过程如下:

①生产者发送消息给消息队列:
在这里插入图片描述
生产者将消息M发送到队列中,消息M在队列中冗余分布,存在多个副本。

②消费者从消息队列中消费消息:

加粗样式
消费消息的一方叫消息消费者,通过调用消息服务的消费接口从队列中读取消息。 消费者从队列中得到消息M,在消费者消费消息的期间,消息M仍存在于消费队列中,但是消息M从消费者开始消费M开始的30秒内不能被该消费组再次进行消费。若在30秒内,该消息没有被消费者确认为消费成功,则DMS认为消息M未消费成功,将可以继续进行消费。

③消费者确认消息已经消费:

在这里插入图片描述

消费者确认消息消费完成,消息M该不再被该消费者所在消费组消费。消息M仍然保持在队列中,并且可以被其他消费组进行消费,消息在队列中至少存在72小时(除非队列删除),72小时后将会被删除。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值