码迷,mamicode.com
首页 > 其他好文 > 详细

RebbitMQ

时间:2019-09-24 08:08:47      阅读:58      评论:0      收藏:0      [点我收藏+]

标签:bind   topic   bit   ESS   交换机   默认   删除   部署   额外   

核心概念

  • Producer:消息生产者,即投递消息的程序。
  • Broker:消息队列服务器实体。单个机器可以部署多个Broker
  • Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。
  • Binding:绑定,它的作用就是把 Exchange 和 Queue 按照路由规则绑定起来。
  • Queue:消息队列载体,每个消息都会被投入到一个或多个队列。
  • Consumer:消息消费者,即接受消息的程序。

Exchange 收到消息时,他是如何知道需要发送至哪些 Queue 呢?这里就需要了解 Binding 和 RoutingKey 的概念:

Binding 表示 Exchange 与 Queue 之间的关系,我们也可以简单的认为队列对该交换机上的消息感兴趣,绑定可以附带一个额外的参数 RoutingKey。Exchange 就是根据这个 RoutingKey 和当前 Exchange 所有绑定的 Binding 做匹配,如果满足匹配,就往 Exchange 所绑定的 Queue 发送消息,这样就解决了我们向 RabbitMQ 发送一次消息,可以分发到不同的 Queue。RoutingKey 的意义依赖于交换机的类型。

 

Exchange 的三种主要类型:Fanout(广播)Direct(直接) 和 Topic(通配符匹配)

 

Fanout Exchange 会忽略 RoutingKey 的设置,直接将 Message 广播到所有绑定的 Queue 中。

Direct Exchange 是 RabbitMQ 默认的 Exchange,完全根据 RoutingKey 来路由消息。设置 Exchange 和 Queue 的 Binding 时需指定 RoutingKey(一般为 Queue Name),发消息时也指定一样的 RoutingKey,消息就会被路由到对应的Queue。

Topic Exchange 和 Direct Exchange 类似,也需要通过 RoutingKey 来路由消息,区别在于Direct Exchange 对 RoutingKey 是精确匹配,而 Topic Exchange 支持模糊匹配。分别支持*和#通配符,*表示匹配一个单词,#则表示匹配没有或者多个单词。

 

q中的消息只要被ack就一定会被删除掉。

 

RebbitMQ

标签:bind   topic   bit   ESS   交换机   默认   删除   部署   额外   

原文地址:https://www.cnblogs.com/chen-hehe/p/11576166.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!