暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

RabbitMQ交换机详解

代码论道 2019-02-19
285

Exchange:接受消息,并根据路由键转发消息所绑定的队列

交换机属性

  • Name

     交换机名称

  • Type

     交换机类型:direct、topic、fanout、headers

  • Durability

      是否需要持久化,true为持久化

  • Auto Delete

   当最后一个绑定到Exchange上的队列删除后,自动删除该Exchange

  • Internal

     当前Exchange是否用于RabbitMQ内部使用,默认False

  • Arguments

     扩展参数,用于扩展AMQP协议自定义使用

交换机类型详解

Direct Exchange

  • 所有发送到Direct Exchange的消息被转发到Routekey中指定的queue

注意:Direct模式可以使用RabbitMQ自带的Exchange: default Exchange,所以不需要将Exchange进行任何绑定(binding)操作,消息传递时,RouteKey必须完全匹配才会被队列接收,否则该消息会被抛弃。

Coding

生产者


消费者


Topic Exchange

  • 所有发送到Topic Exchange的消息被转发到所有关心RouteKey中指定Topic的Queue上

  • Exchange将RouteKey和某Topic进行模糊匹配,此时队列需要绑定一个Topic

  • 可以使用通配符进行模糊匹配

Coding

消费者

生产者

Fanout Exchange

  • 不处理路由键,只需要简单的将队列绑定到交换机上

  • 发送到交换机的消息都会转发到与该交换机绑定的所有队列上

  • fanout交换机转发消效率是最快的

Coding

消费者

生产者

绑定、队列、消息、虚拟主机总结

Binding-绑定

Exchange与Exchange、Queue之间的连接关系

Binding中可可以包含routingkey或参数

Queue-消息队列

消息队列,实际存储消息数据

Durability:是否持久化,Durable:是 Transient:否

Auto delete:yes 代表最后一个监听被移除后,该Queue会自动删除

Message-消息

服务器和应用程序之间传送的数据

由Properties和payload(body)组成

常用属性:delivery model 、headers(自定义属性)

Message-其他属性

content_type、content_encoding、priority

correlatin_id、reply_to、expiration、message_id

timestamp、type、user_id、app_id、cluster_id

Virtual host-虚拟主机

逻辑隔离,最上层的消息路由

一个virtual host里面可以有若干个Exchange和Queue

同一个Virtual host里面不能有相同名称的Exchange和Queue


文章转载自代码论道,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论