佛山视频网站搭建公司,做网站php与python,北京网站建设公司电扬,菜鸟教程官网文章目录 一、创建VirtualHost类二、初始化三、API1.创建交换机2.删除交换机3.创建队列4.删除队列5.创建绑定6.删除绑定7.发送消息转发规则 8.订阅消息1.消费者管理2.推送消息给消费者 3.添加一个消费者管理ConsumerManager9.确认消息 创建VirtualHost类。 1.串起内存和硬盘的数… 文章目录 一、创建VirtualHost类二、初始化三、API1.创建交换机2.删除交换机3.创建队列4.删除队列5.创建绑定6.删除绑定7.发送消息转发规则 8.订阅消息1.消费者管理2.推送消息给消费者 3.添加一个消费者管理ConsumerManager9.确认消息 创建VirtualHost类。 1.串起内存和硬盘的数据。 2.通过在队列名、交换机名前面加上虚拟主机的名字来隔离不同组的业务。 3.实现API 4.实现转发规则 一、创建VirtualHost类 二、初始化
初始化硬盘加载硬盘数据到内存
三、API
1.创建交换机
创建过了 return true没有创建过创建先写硬盘、后写内存
2.删除交换机
检查交换机是否存在不存在抛异常存在删除交换机先删硬盘、再删内存
3.创建队列
检查队列是否存在存在return true不存在创建先写硬盘、再写内存
4.删除队列
检查队列是否存在不存在抛异常存在删除队列先删硬盘、再删内存
5.创建绑定 检查绑定是否存在存在抛异常不存在检查bindingKey是否合法不合法抛异常检查交换机和队列是否存在不存在抛异常存在创建绑定先写硬盘再写内存
6.删除绑定
检查绑定是否存在不存在抛异常省略检查删除绑定先删硬盘、再删内存
7.发送消息
检查交换机是否存在不存在抛异常检查routingKey是否合法合法根据交换机规则转发消息 DIRECT直接交换机 队列名就是routingKey,根据routingKey找对应的队列 FANOUT扇出交换机往交换机绑定的所有队列转发消息 TOPIC主题交换机遍历交换机绑定的所有队列根据routingKey能匹配的上的bindingKey对应的队列 转发规则
检查binfdingKey是否合法 检查routingKey是否合法 根据交换机类型匹配不同的转发规则 主题交换机的匹配规则 发送消息 先写硬盘、再写内存通知消费者可以消费数据了 8.订阅消息
往指定队列添加订阅者消费者队列收到消息后推送消息给订阅者消费者 Consumer 一个函数式接口用来实现回调函数。当队列收到消息后调用的。 服务器通过此接口实现把消息推送给客户端 客户端通过此接口实现收到消息后进行消费 1.消费者管理 添加一个ConsumerEnv类表示一个消费者。 在MSGQueue中添加一个属性 List里面存放订阅了该队列的消费者。 实现添加消费者 以轮询的方式挑选消费者
2.推送消息给消费者
核心方法其实就是调用回调方法但是为了调用次回调方法需要做很多前期准备
添加一个阻塞队列当队列收到消息把队列名添加到阻塞队列中相当于令牌 前面发送消息的时候有一个通知消费者可以消费了这个方法其实就是把队列名添加到阻塞队列中添加一个扫描线程不停的扫描阻塞队列拿到令牌通知线程池执行回调挑选出对应队列的消费者使用线程池执行回调方法推送消息给该消费者 3.添加一个消费者管理ConsumerManager 管理消费者和推送消息给消费者的功能 属性 往阻塞队列中添加队列名发送消息的时候调用通知消费者可以消费消息了 往队列中添加订阅者如果此时有消息了需要立即消费掉 扫描线程 推送消息给消费者 挑选消费者从队列取出消息线程池执行回调在执行回调前将消息放入待确认消息集合如果是自动确认需要在此时删除消息把消息从硬盘、消息集合、待确认消息集合删除
9.确认消息
消费者收到消息后调用次方法手动确认收到消息。
检查队列和消息是否存在把消息从硬盘、消息集合、待确认消息集合删除