还有一些名词概念如:主题(Topic),分组(Group),消息队列(Message Queue),偏移量(Offset),标签(Tag)等
2.2.1、Topic 主题
我们可以通过topic区标识一类消息,可以将消息分为不同主题。例如Topic A、Tocpic B等。在实际应用中可能会分为家电、衣物、视频等不同主题进行区分。
我们的Topic一般来说会挂载多个queue队列,这样在某种程度上可以提高我们消息队列的并发度。
读/写队列问题:
从物理上来讲,读写队列是同一个队列。
例如:创建Topic时,创建的写队列数量为8,而读队列的数量为4。此时系统会创建8个Queue,分别是0,1,2,3,4,5,6,7。Producer会将消息写入到这8个队列,但Consumer只会消费0,1,2,3这四个队列中的消息,而4,5,6,7中的消息是不会被消费到的。
例如:创建Topic时,创建的写队列数量为4,而读队列的数量为8。此时系统会创建8个Queue,分别是0,1,2,3,4,5,6,7。Producer会将消息写入到这0,1,2,3 这几个队列,但Consumer只会消费0,1,2,3,4,5,6,7中的消息是进行消费,但是4,5,6,7中是没有消息可以消费的。
这两种设计方式都是有问题的,但是这样设计的好处是什么呢?
其实这样设计的目的是为了方便Topic的queue缩容。
Perm: 用于设置当前创建的Topic的操作权限:2表示只读,4表示只写,6表示读写
2.2.2、Group 分组
- 生产者分组:标识同一类的消息的发送,生产者中的消息分组一般作用于事务消息。
消费者分组:是对一类消息的消费,消费的逻辑大致上是一致的。
eg: 消费者分组: 物流组 通知组 物流的业务逻辑进行消费 消息通知的业务逻辑进行消费
2.2.3、Message Queue 消息队列
Message Queue 即是 主题被划分为一个或多个子主题,而一条消息必须有一个主题(Topic),主题可以看做你要邮寄的地址,一条消息也可以拥有一个可选的Tag标签和额外的键值对。我们的生产者发布消息之后,会被Topic会分发到队列之中,而我们的消费者组就是区订阅消费指定的队列中的消息。
2.2.4、Offset 偏移量
一般来说是指MessageQueue中的偏移量,没有特别指出的话就是指我们消费者消费的数量。
2.2.5、Tag 标签
Tag标签相当于是子主题,他是消息的第二级别类型,用于为用户提供额外的灵活性。如果Topic比作是衣服,那么Tag就可以看做是风衣、短袖、短裤等等...