MQ在程序中的应用

1、MQ专业术语:

MQ配置

      Topic:表示消息的第一级类型,比如一个电商系统的消息可以分为:交易消息、物流消息......一条消息必须有一个Topic。                                                                                    Tag:tag表示消息的第二级类型,比如交易消息又可以分为:交易创建消息,交易完成消息......一条消息可以没有Tag,RocketMQ提供2级消息分类,方便大家灵活控制。            Queue:一个topic下可以设置多个queue(消息队列)。当我们发送消息时,需要制定该消息的topic,RocketMQ会轮询该topic下的所有队列,将消息发送出去。                      Producer与Producer Group:消息队列的生产者,Group通常发送一类消息,且发送逻辑一致。                                                                                                                      Consumer与Consumer Group:消息消费者一般由后台系统异步消费消息,消费一类消息,且消费逻辑一致。Push ConsumerConsumer 的一种,应用通常向 Consumer 对象注册一个 Listener 接口,一旦收到消息,Consumer 对象立刻回调 Listener 接口方法。Pull ConsumerConsumer 的一种,应用通常主动调用 Consumer 的拉消息方法从 Broker 拉消息,主动权由应用控制。                                                            Broker:消息的中转者,负责存储和转发消息,可以理解为消息队列服务器,提供了消息的接受、存储、拉取和转发服务。broker是RockerMQ的核心,他不能挂的,所以需要保证broker的高可用。                                                                                                      广播消费一条消息被多个Consumer消费,即使这些Consumer属于同一个Consumer Group,消息也会被Consumer Group中的每个Consumer都消费一次。在广播消费中的Consumer Group概念可以认为在消息划分方面无意义。                                      集群消费一个Consumer Group中的Consumer实例平均分摊消费消息。例如某个Topic有 9 条消息,其中一个Consumer Group有 3 个实例(可能是 3 个进程,或者 3 台机器),那么每个实例只消费其中的 3 条消息。                                                                          NameServer:即名称服务,1)接收broker的请求,注册broker的路由信息;2)接收client的请求,根据某个topic获取其到broker的路由信息;NameServer没有状态,可以横向扩展,每个broker在启动的时候会到NameServer注册,Producer在发送消息前会根据topic到NameServer获取路由(到broker)信息,Consumer也会定时获取topic路由信息。

2、MQ结构   

MQ结构

Broker负责消息存储,以Topic为纬度支持轻量级的队列,单机可以支撑上万队列规模,支持消息推拉模式,具备多副本容错机制、强大的削峰填谷以及上亿消息堆积能力。

                                                                 

你可能感兴趣的:(MQ在程序中的应用)