顾得泉:个人主页
个人专栏:《Linux操作系统》 《C++从入门到精通》 《LeedCode刷题》
键盘敲烂,年薪百万!
一、概念性框架理解
我们主要实现的内容:
1.Broker服务器:消息队列服务器(服务端)
2.消息发布客户端:向服务器发布消息
3.消息订阅客户端:从服务器订阅消息
broker服务器是我们最核心的部分,负责消息的存储和转发。
而我们使用的AMQP(Advanced Message Queuing Protocol-高级消息队列协议,其中一个提供统一消息服务的应用层标准高级消息队列协议,为面向消息的中间件设计,使得遵从该规范的客户端应用和消息中间件服务器的全功能互操作成为可能)模型中,也就是消息中间件服务器Broker中,又存在以下概念:
虚拟机(VirtualHost):类似于MySQL的"database",是一个逻辑上的集合。一个BrokerServer上可以存在多个VirtualHost
交换机(Exchange):生产者把消息先发送到Broker的Exchange 上,再根据不同的规则,把消息转发给不同的 Queue
队列(Queue):真正用来存储消息的部分,每个消费者决定自己从哪个Queue上读取消息
绑定(Binding):Exchange和Queue之间的关联关系,Exchange和Queue可以理解成"多对多"关系,使用一个关联表就可以把这两个概念联系起来
消息(Message):传递的内容
二、服务端模块概要设计
一、交换机数据管理模块
1.要管理的数据:描述了一个交换机应该有什么数据
1.交换机名称:唯一标识
2.交换机类型:决定了消息的转发方式
每个队列绑定中有个binding_key,每条消息中有个routing_key1.直接交换: binding_key与routing_key相同,则将消息放入队列
2.广播交换:将消息放入交换机绑定的所有队列中
3.主题交换: routing_key与多个绑定队列的binding_key有匹配规则,匹配成功了则放入3.持久化标志:决定了当前交换机信息是否需要持久化存储
4.自动删除标志:指的是关联了当前交换机的所有客户端都退出了,是否要自动删除交换机5.交换机的其他参数:当前未使用。
2.对交换机的管理操作:
1.创建交换机:本质上需要的是声明-------强断言的思想-有就OK,没有则创建的意思