欢迎光临散文网 会员登陆 & 注册

一个消息队列

2022-08-17 16:57 作者:xhy2023  | 我要投稿

消息队列的模式

1. 简单模式:当客户端(生产者)将消息写入到消息队列中时,消息队列中消息的数量加1,消费者实时监听消息队列,当队列中有消息时,则获取消息,之后执行业务逻辑,同时消息队列的消息数量减1。

一个生产者P发送消息到队列Q,一个消费者C接收

2. 工作模式:由一个生产者负责消息写入队列,但是如果只有一个消费者负责消费,可能会造成消息的积压,所以准备多个消费者共同消费一个队列中的消息。

一个生产者,多个消费者,每个消费者获取到的消息唯一,多个消费者只有一个队列。

3. 发布/订阅模式(Publish/Subscribe):一个生产者发送的消息会被多个消费者获取,每个消费者得到的消息是一样的,这点不同于工作模式比如微信公众号,不同的人订阅同一个公众号,收到的消息都是一样的。

topic实现了发布和订阅,所以从1到N个订阅者都能得到这个消息的拷贝

发布订阅模式的消息队列具体实现

一个topic(可认为成公众号)只产生一种类型的消息,topicName(公众号名字)用来标识公众号,具有唯一性。订阅某一个公众号的所有订阅者们都具有相同的topicName,每个topic包含一个成员变量set来存储它们的全部订阅者。整体的框架图如下:

1)消息处理函数的类型抽象:M:消息类型参数化。 T:消息处理类类型参数化。

2)消息处理线程的类型抽象:一个消息处理线程监听一个消息队列,不断从消息队列中取出消息到临时队列,然后调用传递进来的消息处理类的成员函数进行处理。

3)消费者类型抽象:每个订阅者(Subscriber)需要知道自己订阅了什么公众号(topicName)。有消息提醒时就去浏览信息(消息处理线程)。

4)生产者类型抽象:用 topicName 来表示一个公众号,一个公众号只可以产生一种类型的消息,可以有很多个人(Subscriber)进行订阅,成员变量包含一个set来存储所有的订阅者。当有消息产生的时候,每个订阅者者都会收到相同的消息。

5)订阅流程类型抽象:

消息队列使用


一个消息队列的评论 (共 条)

分享到微博请遵守国家法律