美文网首页
RabbitMQ之"Topics"

RabbitMQ之"Topics"

作者: raysong | 来源:发表于2017-09-19 16:14 被阅读0次

一、topic是什么?

二、topic exchange和其他exchange之间的区别?

三、什么时候用topic,怎么用?

英文版原文

一、exchange的类型有五种,一种是fanout,第二种是direct,第三种就是topic,第四种默认的exchange,第五种是headers exchange

二、1、消息发送到topic exchange的时候 routing_key 不能随便定义,必须是由"."分开的单词,类似这样:"stock.usd.nyse", "nyse.vmw", "quick.orange.rabbit".单词的数量可以自己随意增加,但是不能超过225bytes, binding key必须也是相同的形式

2、topic背后的逻辑和direct类似:一条有着特别routing_key 的消息会被送到匹配 binding key的所有queue

binding key:

* (star) can substitute for exactly one word(*只能替换匹配一个单词)

# (hash) can substitute for zero or more words.(#能替换匹配0到多个单词)

在这个例子中,我们要发送一些描述动物的消息,这些被发送的消息的routing_key 由三个单词(两个".")组成, "..".

"*.orange.*"绑定Q1 (所有三个单词的,中间单词是“orange”的消息都会发送到Q1)

"*.*.rabbit" 和"lazy.#".绑定Q2(三个单词的以rabbit结尾的消息和以lazy开头的多个单词都会发送到Q2)

"quick.orange.rabbit" 发送到Q1和Q2

"lazy.orange.elephant" 发送到Q1和Q2

"quick.orange.fox" 发送到Q1

"lazy.brown.fox" 发送到Q2

"lazy.pink.rabbit" 发送到Q2(匹配两个binding_key,但是这两个bindling_key 都绑定的是Q2)

"quick.brown.fox" 不匹配,这条消息会被丢弃

特殊情况:

一个单词:"orange",不匹配被丢弃

四个单词:"quick.orange.male.rabbit",不匹配被丢弃

"lazy.orange.male.rabbit"匹配"lazy.#",发送到Q2

当一个queue用"#"绑定时,将会收到所有的消息,如果不考虑routing_key基本和 fanout exchange一样

当queue既不用"*" 也不用"#"绑定时,那topic exchange基本和direct一样

三、(貌似不可以插入代码)

相关文章

  • RabbitMQ之"Topics"

    一、topic是什么? 二、topic exchange和其他exchange之间的区别? 三、什么时候用topi...

  • rabbitmq中文教程python版 - Topics

    源码:https://github.com/ltoddy/rabbitmq-tutorial Topics (us...

  • 6.Rabbitmq Topics

    前言 主题模式下,消费者能够接收到符合某一主题的的消息,消息的匹配规则如下: * (star) 匹配一个字符;# ...

  • 7.RabbitMQ Topics

    1.Topic exchange 为了实现组播,我们将exchange的类型设置为topic,同时指定routin...

  • RabbitMQ系列(六):Topics

    之前几节已经学习过fanout exchange,direct exchange的使用,并用他们构建了一个...

  • rabbitmq(4)topics模式

    topics模式适合订阅者按需索取。发布者发布的routing中带有不同的特点,举例如下 中间用点分隔订阅者按照需...

  • RabbitMQ 官方教程(5 Topics)

    主题 在上一篇教程中,我们改进了日志系统。我们使用了direct交换器,而不是仅能进行模拟广播的fanout交换器...

  • 【译】RabbitMQ教程五

    内容来自:RabbitMQ Tutorials Java版 Topics 在上一个教程中我们改进了我们的日志系统:...

  • RabbitMQ五种模式(TOPICS模式)

    Send.java Recv.java Recv2.java build.gradle rabbit-mq源码地址...

  • RabbitMQ官方教程5--Topics

    说明 在第四个教程中,我们对日志系统进行了改进,使用direct类型的交换机代替了只能模拟广播的fanout类型的...

网友评论

      本文标题:RabbitMQ之"Topics"

      本文链接:https://www.haomeiwen.com/subject/hnzwsxtx.html