RocketMQ之基本信息
1.Producer
即消息生产者,负责产生消息,一般由业务系统负责产生消息。
2.Consumer
即消息消费者,负责消费消息,一般是后台系统负责异步消费。
3.Push Consumer
Consumer的一种,应用通常向Consumer对象注册一个Listener接口,一旦收到消息,Consumer对象立刻回调Listener接口方法。
4.Pull Consumer
Consumer的一种,应用通常主动调用Consumer的拉消息方法从Broker拉消息,主动权由应用控制。
5.Producer Group
一类Producer的集合名称,这类Producer通常发送一类消息,且发送逻辑一致。
6.Consumer Group
一类Consumer的集合名称,这类Consumer通常消费一类消息,且消费逻辑一致。
7.Broker
消息中转角色,负责存储消息,转发消息,一般也称Server。在JMS规范中称Provider。
8.广播消费
一条消息被多个Consumer消费,即使这些Consumer属于同一个Consumer Group,消息也会被该Consumer Group中的每个Consumer消费一次。广播消费中的Consumer Group可以认为在消息划分方面没意义。
在CORBA Notification规范中,消费方式都属于广播消费
在JMS规范中,相当于JMS publish/subscribe model
9.集群消费
一个Consumer Group中的Consumer实例平均分摊消费消息。如某个Topic由9条消息,其中一个Consumer Group有3个实例(可能是3个进程,3台机器等),那么每个实例只消费3条消息。
在CORBA Notification规范中,无此消费方式。
在JMS规范中,JMS point-to-point model 与之类似。但rocketmq的集群消费功能大等于PTP模型。rocketmq单个Consumer Group内的消费者类似PTP,但一个Topic/Queue可以被多个Consumer Group消费。
10。顺序消息
消费消息的顺序要同发送消息的顺序一致。在rocketmq中,主要指局部顺序。即一类消息为满足顺序性,必须Producer单线程顺序发送,且发送到同一个队列,这样Consumer就可以按照Producer发送顺序去消费消息。
11.普通顺序消息
顺序消息的一种。正常情况下可以保证完全的顺序消息,但一旦发生通信异常,broker重启,由于队列总数发生变化,哈希取模后定位的队列会变化,产生短暂的消息顺序不一致。
如果业务能容忍在集群异常情况(如某个broker宕机或重启)下,消息短暂乱序,使用普通顺序方式比较合适。
12.严格顺序消息
顺序消息的一种。异常情况下也能保证顺序。但是牺牲了分布式Failover特性。即broker集群中只要有一台机器不可用,则整个集群都不可用,服务可用性大大降低。
如果服务器部署成同步双写模式,此缺陷可通过备机自动切换成主机避免。不过仍会有几分钟的服务不可用。
目前已知的应用只有数据库 binlog 同步强依赖严格顺序消息,其他应用绝大部分都可以容忍短暂乱序,推 荐使用普通的顺序消息。
13.消息队列
在rocketmq中,消息队列都是持久化,长度无限的数据结构。长度无限指的是队列中每个存储单元都是定长,访问其中的存储单元使用offset来访问,offset是java的long类型,64位,理论上在100年内不会溢出,所以认为是长度无限。另外队列中只保存最近几天的数据,之前的数据会按过期时间删除。
也可以认为消息队列是一个长度无限的数组,offset就是下标。
RocketMQ之基本信息的更多相关文章
- 阿里云RocketMQ的生产者简单实现
// MQ的应用场景有比如 订单变更消息可以通过产生这个事件的地方(比如前端调用后端的接口post一个订单,那么就是在这个mapping方法里做一个生产者[不过最好通过aop来实现,不然n多个接口都要 ...
- SpringBoot如何优雅的使用RocketMQ
目录 SpringBoot如何优雅的使用RocketMQ SpringBoot如何优雅的使用RocketMQ MQ,是一种跨进程的通信机制,用于上下游传递消息.在传统的互联网架构中通常使用MQ来对上下 ...
- RocketMQ源码详解 | Broker篇 · 其二:文件系统
概述 在 Broker 的通用请求处理器将一个消息进行分发后,就来到了 Broker 的专门处理消息存储的业务处理器部分.本篇文章,我们将要探讨关于 RocketMQ 高效的原因之一:文件结构的良好设 ...
- RocketMQ原理解析-Remoting
Remoting2. 通信层底层传输协议 RocketMq服务器与客户端通过传递RemotingCommand来交互,通过NettyDecoder,对RemotingCommand进行协议的编码与解码 ...
- RocketMQ原理解析-Broker
broker 1. broker的启动 brker的启动 Broker向namesrv注册 1. 获取namesrv的地址列表(是乱序的) 2. 遍历向每个namesrv注册topic的配置信息top ...
- RocketMQ原理解析-Consumer
consumer 1.启动 有别于其他消息中间件由broker做负载均衡并主动向consumer投递消息,RocketMq是基于拉模式拉取消息,consumer做负载均衡并通过长轮询向broker拉消 ...
- RocketMQ原理解析-Producer
producer producer 1.启动流程 Producer如何感知要发送消息的broker即brokerAddrTable中的值是怎么获得的, 1. 发送消息的时候指定会指定topic,如果 ...
- 分布式开放消息系统(RocketMQ)的原理与实践
分布式消息系统作为实现分布式系统可扩展.可伸缩性的关键组件,需要具有高吞吐量.高可用等特点.而谈到消息系统的设计,就回避不了两个问题: 消息的顺序问题 消息的重复问题 RocketMQ作为阿里开源的一 ...
- rocketmq生产者和消费者
1.生产者: package com.ebways.mq.test.mq; import com.alibaba.rocketmq.client.exception.MQClientException ...
随机推荐
- brew 安装的.net 运行时提示"Did you mean to run dotnet SDK commands?"
原因未知,但有解决方案 使用 brew cask 安装的.NET Core brew cask install dotnet 结果运行时出现: 解决方案: 下载官方 .pkg 文件安装,顺便卸载掉 b ...
- POST请求成功,但接口返回数据不正确
事件:使用Jmeter做APP的搜索接口测试,请求成功了,但无论keyword是什么“内容”(这里的内容是带引号的哦),接口返回的内容都是:未匹配到搜索结果 排查问题: keyword=“世界” st ...
- esp32(M5STACK)程序烧写(Ubuntu)
由于我们的开发环境在Ubuntu上,所以介绍一下如何在Ubuntu上烧写esp32的程序 首先下载esptools pip install esptool 擦除 sudo es ...
- [jzoj 5782]【NOIP提高A组模拟2018.8.8】 城市猎人 (并查集按秩合并+复杂度分析)
传送门 Description 有n个城市,标号为1到n,修建道路花费m天,第i天时,若gcd(a,b)=m-i+1,则标号为a的城市和标号为b的城市会建好一条直接相连的道路,有多次询问,每次询问某两 ...
- C++ 类型转化(运算符重载函数)和基本运算符重载(自增自减)
类型转化(运算符重载函数) 用转换构造函数可以将一个指定类型的数据转换为类的对象.但是不能反过来将一个类的对象转换为一个其他类型的数据(例如将一个Complex类对象转换成double类型数据).在C ...
- (32)Spring Boot使用@SpringBootApplication注解,从零开始学Spring Boot
[来也匆匆,去也匆匆,在此留下您的脚印吧,转发点赞评论] 如果看了我之前的文章,这个节你就可以忽略了,这个是针对一些刚入门的选手存在的困惑进行写的一篇文章. 很多Spring Boot开发者总是使用 ...
- Spring Boot-properties使用(二)
自定义属性 @value注入 在application.properties新增配置 student.name=小明student.age=12student.info=${student.name} ...
- Linux查看 kennel , 物理CPU个数、核数、逻辑CPU个数
other article on my list: 查看进程 https://i.cnblogs.com/PostDone.aspx?postid=9231604&actiontip=%E4% ...
- 洛谷 P2399 non hates math
P2399 non hates math 题目背景 non习惯将分数化成小数,但在数学中要以分数形式写,不能化成小数 因此non找到了会编程的你,帮助他将小数化回分数 题目描述 给出一个小数,将它化成 ...
- eclipse怎样开启/关闭代码提示功能
把以下红色框中的勾勾选上就是使用代码提示功能,不选就是关闭.