zoukankan      html  css  js  c++  java
  • rabbitmq++:rabbitmq 三种常用的交换机

    更多 rabbitmq 介绍

    首先先介绍一个简单的一个消息推送到接收的流程,提供一个简单的图:

    黄色的圈圈就是我们的消息推送服务,将消息推送到 中间方框里面也就是 rabbitMq的服务器;

    然后经过服务器里面的交换机、队列等各种关系(后面会详细讲)将数据处理入列后,最终右边的蓝色圈圈消费者获取对应监听的消息。

    常用的交换机有以下三种,因为消费者是从队列获取信息的,队列是绑定交换机的(一般),所以对应的消息推送/接收模式也会有以下几种:

    Direct Exchange :

      直连型交换机,根据消息携带的路由键将消息投递给对应队列。

      大致流程,有一个队列绑定到一个直连交换机上,同时赋予一个路由键 routing key 。

      然后当一个消息携带着路由值为X,这个消息通过生产者发送给交换机时,交换机就会根据这个路由值X去寻找绑定值也是X的队列。

    Fanout Exchange:

      扇型交换机,这个交换机没有路由键概念,就算你绑了路由键也是无视的。 这个交换机在接收到消息后,会直接转发到绑定到它上面的所有队列。

    Topic Exchange:

      主题交换机,这个交换机其实跟直连交换机流程差不多,但是它的特点就是在它的路由键和绑定键之间是有规则的。

    简单地介绍下规则:

    *  (星号) 用来表示一个单词 (必须出现的)

    #  (井号) 用来表示任意数量(零个或多个)单词

    通配的绑定键是跟队列进行绑定的,举个小例子

    队列Q1 绑定键为 *.TT.*          队列Q2绑定键为  TT.#
    如果一条消息携带的路由键为 A.TT.B,那么队列Q1将会收到;
    如果一条消息携带的路由键为TT.AA.BB,那么队列Q2将会收到;

    主题交换机是非常强大的,为啥这么膨胀?

    当一个队列的绑定键为 "#"(井号) 的时候,这个队列将会无视消息的路由键,接收所有的消息。

    当 * (星号) 和 # (井号) 这两个特殊字符都未在绑定键中出现的时候,此时主题交换机就拥有的直连交换机的行为。

    所以主题交换机也就实现了扇形交换机的功能,和直连交换机的功能。

    另外还有 Header Exchange 头交换机 ,Default Exchange 默认交换机,Dead Letter Exchange 死信交换机。

  • 相关阅读:
    js获取上一个兄弟元素
    js验证身份证
    github绑定自己的域名
    vue子组件传参给父组件
    vue父组件传参给子组件
    运行vue init webpack vueTest时报错
    运用CSS高斯模糊添加图片加载效果
    分享记录一批免费VIP视频解析接口,不定时更新!
    收藏的一些有意思的CSS加载样式
    一款很好用的页面滚动元素动画插件-AOS.JS
  • 原文地址:https://www.cnblogs.com/codingmode/p/12627225.html
Copyright © 2011-2022 走看看