内容简介:消息队列是在消息的传输过程中保存消息的容器,用于接收消息并以文件的方式存储,一个队列的消息可以同时被多个消息消费者消费。分布式消息服务DMS则是分布式的队列系统,消息队列中的消息分布存储,且每条消息存储多个副本,以实现高可用性,如下图所示。一般来说,消息队列具有如下属性:普通队列支持“分区有序”和“全局队列”两种模式,ActiveMQ队列和Kafka队列均为分区有序。
什么是消息队列?
消息队列是在消息的传输过程中保存消息的容器,用于接收消息并以文件的方式存储,一个队列的消息可以同时被多个消息消费者消费。分布式消息服务DMS则是分布式的队列系统,消息队列中的消息分布存储,且每条消息存储多个副本,以实现高可用性,如下图所示。
一般来说,消息队列具有如下属性:
消息顺序
普通队列支持“分区有序”和“全局队列”两种模式,ActiveMQ队列和Kafka队列均为分区有序。
分区有序的队列通过分布式处理,支持更高的并发,但由于队列的分布式特性,DMS无法保证能够以接收消息的精确顺序进行消费。如果用户要求保持顺序,建议在每条消息中放置 排序 信息,以便在收到消息时对消息重新排序。
全局有序的队列对消息消费遵循先入先出规则(FIFO),适用于对消费顺序要求较高的场景。
至少一次传递
在极少数情况下,当用户接收或删除消息时,存储消息副本的服务器之一可能不可用。如果出现这种情况,则该不可用服务器上的消息副本将不会被删除,并且在接收消息时可能会再次获得该消息副本。
这被称为“至少一次传递”,因此,用户的应用程序应该设计为幂等的应用程序(即,如果应用程序多次处理同一条消息,则不得受到不利影响)。
消息较少时单次消费不能获取指定数量的消息
从消息队列中消费消息时,DMS每次从部分消息存储分区中读取消息返回消息给消费者,如果队列中的消息数比较少,则单次消费可能会少于指定条数,但多次消费最终可获取全部消息。
常见消息队列介绍:
普通队列
包括分区有序和全局有序,分区有序的普通队列具有更高的并发性能,不保证先入先出(FIFO)的严格顺序,全局有序的普通队列保证消息先入先出(FIFO)的严格顺序。DMS支持普通队列和有序队列,提供高并发、低延时、稳定安全的消息中间件服务。
ActiveMQ队列
使用AMQP协议的队列。Advanced Message Queuing Protocol,是统一消息服务的应用层标准的高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。DMS兼容ActiveMQ,简单易用,按需使用,支持水平扩展,安全可靠,无忧运维。
Kafka队列
支持使用开源kafka客户端进行生产消息和消费消息。支持高吞吐和高可靠两种模式,高吞吐模式的消息副本异步落盘,具有较高的性能,高可靠模式的消息多副本同步落盘,保证消息的可靠性。DMS兼容Kafka,即开即用,安全可靠,支持高吞吐、高可靠两种应用场景。
RabbitMQ队列
采用物理隔离方式部署,支持用户自定义内存规格和自定义特性,您可以根据业务需要定制相应计算能力和存储空间的RabbitMQ实例。DMS兼容RabbitMQ,提供独占资源,保证队列高性能。
分布式消息服务DMS提供可靠且可扩展的托管消息队列。
note:肾好甚好
以上所述就是小编给大家介绍的《消息队列(一)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 消息队列(三)常见消息队列介绍
- 消息队列探秘 – RabbitMQ 消息队列介绍
- springboot整合各种消息队列(二):rabbitmq消息队列
- springboot整合各种消息队列(一):redis消息队列
- 消息队列系列二(IOT中消息队列的应用)
- 消息队列(七)RocketMQ消息发送
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
正则表达式在线测试
正则表达式在线测试
HSV CMYK 转换工具
HSV CMYK互换工具