文档章节

消息队列属性及常见消息队列介绍

中间件小哥
 中间件小哥
发布于 06/22 09:21
字数 1083
阅读 17
收藏 6

什么是消息队列?

消息队列是在消息的传输过程中保存消息的容器,用于接收消息并以文件的方式存储,一个队列的消息可以同时被多个消息消费者消费。分布式消息服务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提供可靠且可扩展的托管消息队列。服务应用广泛,在实际选型时是一个不错的选择。想要了解更多,欢迎点开分布式消息服务DMS查看。

© 著作权归作者所有

共有 人打赏支持
中间件小哥
粉丝 7
博文 44
码字总数 63467
作品 0
深圳
私信 提问
RabbitQM入门概念(一)

一、RabbitMQ基本概念 rabbitMQ是什么 AMQP简介 说到rabbitMQ,就不得不提下AMQP(advanced Message Queuing Protocol)高级消息队列协议。 AMQP是一个提供统一消息服务的应用层标准高级消息...

benny周
2016/06/19
69
0
分布式系统消息中间件—RabbitMQ的使用进阶篇

前言: 这篇文章主要总结一下RabbitMQ在日常项目开发中比较常用的几个特性。 一。 mandatory 参数 上一篇文章中我们知道,生产者将消息发送到RabbitMQ的交换器中通过RoutingKey与BindingKey的...

Java干货分享
09/25
0
0
WebSphere MQ配置

概述 WebSphere MQ作为IBM软件家族的消息传输中间件产品,以其出色的特性和功能在业界享有盛誉。WebSphere MQ独特的安全机制、简便快速的编程风格、卓越不凡的稳定性、可扩展性和跨平台性,以...

sckgeneral
2016/09/06
88
0
HTTP协议级消息队列服务组件--UCMQ

UCMQ是一款轻量的HTTP协议级消息队列服务组件,项目的最初原型来自“张宴”的HTTPSQS。 基本特性: 支持标准的HTTP协议( GET/POST方法),支持长连接(keep-alive); 请求响应非常快速,入队...

红薯
2013/06/08
16.6K
6
Spring Boot系列——死信队列

在说死信队列之前,我们先介绍下为什么需要用死信队列。 如果想直接了解死信对接,直接跳入下文的"死信队列"部分即可。 ack机制和requeue-rejected属性 我们还是基于上篇《Spring Boot系列—...

Jackie_Zheng
10/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

经典编程书籍大全·我一本都没有看过

经典编程书籍大全 100+ 经典技术书籍,涵盖:计算机系统与网络、系统架构、算法与数据结构、前端开发、后端开发、移动开发、数据库、测试、项目与团队、程序员职业修炼、求职面试 和 编程相关...

netkiller-
20分钟前
0
0
改变自己从学习linux开始

刚刚高中毕业,进如大学的时候,总以为摆脱了束缚可以无拘无束的玩耍了。当时真的就是和众多大学生一起,像撒欢的野马,每天逃课,上网,泡吧,不把学习当一会事,学校里教授讲的各种知识也没...

linuxprobe16
24分钟前
2
0
Apache Zeppelin 中 Spark解释器

概述 Apache Spark是一种快速和通用的集群计算系统。它提供Java,Scala,Python和R中的高级API,以及支持一般执行图的优化引擎。Zeppelin支持Apache Spark,Spark解释器组由5个解释器组成。 ...

hblt-j
24分钟前
0
0
十分钟带你理解Kubernetes核心概念

http://www.dockone.io/article/932

踏破铁鞋无觅处
38分钟前
1
0
浅析微信支付:开通免充值产品功能及如何进行接口升级指引

本文是【浅析微信支付】系列文章的第十五篇,主要讲解如何开通免充值产品功能流程和其中的注意事项,对于接口升级会重要讲解,避免爬坑。 浅析微信支付系列已经更新十五篇了哟~,没有看过的...

YClimb
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部