java热血征途触屏版,源码+原理+手写框架( 二 )


当一个队列的绑定键为#的时候 , 这个队列将会无视消息的路由键 , 接收所有的消息
首部交换机
首部交换机是忽略的一种路由方式 。路由器和交换机路由的规则是通过信息来交换的 , 这个有点像HTTP的 。
将一个交换机声明成首部交换机 , 绑定一个队列的时候 , 定义一个Hash的数据结构 , 消息发送的时候 , 会携带一组hash数据结构的信息 , 当Hash的内容匹配上的时候 , 消息就会被写入队列 。
绑定交换机和队列的时候 , Hash结构中要求携带一个键x-match , 这个键的Value可以是any或者all , 这代表消息携带的Hash是需要全部匹配(all) , 还是仅匹配一个键(any)就可以了
相比直连交换机 , 首部交换机的优势是匹配的规则不被限定为字符串
和Queue之间的虚拟连接 , 在与多个 Queue发生后会生成一张路由表 , 路由表中存储着 Queue所需消息的限制条件即 Key 。当收到时会解析其得到 Key , 根据 Key与 Type将路由到 Queue 。Key由在 与 Queue时指定 , 而 Key由发送时指定 , 两者的匹配方式由 Type决定
Key
一个路由规则 , 虚拟机可用它来确定如何路由一个特定消息 。
Queue
也称为 Queue , 消息队列 , 保存消息并将它们转发给消费者 。
消息发布流程:
生产者和建立TCP连接 。生产者和建立通道 。生产者通过通道消息发送给 , 由将消息进行转发 。将消息转发到指定的Queue(队列)
消息接收流程:
消费者和建立TCP连接。消费者和建立通道 。消费者监听指定的Queue(队列)当有消息到达Queue时默认将消息推送给消费者 。消费者接收到消息 。
消息流转过程
生产者生产出并投递到上
一个可以绑定多个 Queue , 它根据路由策略( key)路由到指定的队列 , 最后由消费端去监听队列
工作模式
队列模式:
对于任务过重或任务较多情况使用工作队列可以提高任务处理的速度 。
1、一条消息只会被一个消费者接收;
2、采用轮询的方式将消息是平均发送给消费者的;
【java热血征途触屏版,源码+原理+手写框架】3、消费者在处理完某条消息后 , 才会收到下一条消息 。