前言

上一章节,我们说了两个类型,本章我们说一下其三:Topic Exchange

Topic Exchange 

Topic Exchange – 将路由键和某模式进行匹配。此时队列需要绑定要一个模式上。符号“#”匹配一个或多个词,符号“*”匹配不多不少一个词。因此“audit.#”能够匹配到“audit.irs.corporate”,但是“audit.*” 只会匹配到“audit.irs”。我在RedHat的朋友做了一张不错的图,来表明topic交换机是如何工作的: 

情景进入

Topic解决了我们另一个需求。举个例子,有一个做资讯的公司,他们会收集各种科技公司的动态并且第一时间转发出来。小编A负责小米公司,小编B负责华为公司,手工去搜索文章并且看标题是否匹配再进行转发是非常的低效的,可能小编们想要偷懒,写一个程序去各大网站进行爬数据,对于标题中含有小米的交给小编A,对于标题中含有华为的交给小编B。

代码块

发布者:

         /// <summary>/// Topic实现   模拟场景: 对于标题中含有小米的交给小编A,对于标题中含有华为的交给小编B。 /// </summary>/// <param name="args"></param>static void Main(string[] args){var flag = true;while (flag){Console.WriteLine("请输入要发布的消息key|msg");var msg = Console.ReadLine();if (msg != null && msg != "")using (var channel = HelpConnection.GetConnection().CreateModel()){channel.ExchangeDeclare("TopicExchange", ExchangeType.Topic, true, false, null);var msgs = msg.Split('|');var body = Encoding.UTF8.GetBytes(msgs[1]);Console.WriteLine("发布内容:键" + msgs[0]);Console.WriteLine("发布内容:值" + msgs[1]);channel.BasicPublish("TopicExchange", msgs[0], null, body);Console.WriteLine("发布成功");}else {flag = true;}}Console.ReadKey();}

消费端

  /// <summary>/// Topic实现   模拟场景: 对于标题中含有小米的交给小编A,对于标题中含有华为的交给小编B。 /// </summary>/// <param name="args"></param>static void Main(string[] args){bool flag = true;var key = "";while (flag){Console.WriteLine("请输入路由正则, .代表字符,*代表零到多个字符");key = Console.ReadLine();if (string.IsNullOrWhiteSpace(key)){Console.Write("请输入路由");flag = true;}else{//  flag = false;using (var channel = HelpConnection.GetConnection().CreateModel()){var queueName = key + "Queue";channel.ExchangeDeclare("TopicExchange", ExchangeType.Topic, true, false, null);channel.QueueDeclare(queueName, true, false, false, null);channel.QueueBind(queueName, "TopicExchange", key, null);var consumer = new EventingBasicConsumer(channel);consumer.Received += (mode, e) =>{var body = Encoding.UTF8.GetString(e.Body);Console.WriteLine("显示内容:" + body);};channel.BasicConsume(queueName, true, consumer);Console.ReadKey();}}}}

效果图

  • 博主是利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的纯镀 24k 文章,请原谅博主成为一个无耻的文档搬运工!
  • 小弟刚迈入博客编写,文中如有不对,欢迎用板砖扶正,希望给你有所帮助。

转载于:https://www.cnblogs.com/lrzr/p/7365731.html

RabbitMQ八:交换机类型Exchange Types--Topic介绍相关推荐

  1. RabbitMQ的交换机类型和工作模式

    RabbitMQ的交换机类型有四种 1.direct 直流交换机: 根据消息的路由键routingkey,将消息以完全匹配的方式路由到指定的队列中. 这里的匹配指的是消息本身携带的路由键和队列与交换机 ...

  2. RabbitMQ交换机类型

    RabbitMQ交换机类型 一.Direct Exchange(直连交换机) 二. Fanout Exchange(扇型交换机) 三.Topic Exchange(主题交换机) 四.Headers E ...

  3. RabbitMQ入门学习系列(六) Exchange的Topic类型

    快速阅读 介绍exchange的topic类型,和Direct类型相似,但是增加了"."和"#"的匹配.比Direct类型灵活 Topic消息类型 特点是:to ...

  4. RabbitMq系列(九):主题交换Topic Exchange

    系列文章 RabbitMq系列(一):服务器搭建 RabbitMq系列(二):最简单的例子 RabbitMq系列(三):工作队列 RabbitMq系列(四):消息确认和持久性 RabbitMq系列(五 ...

  5. #rabbitMQ #重复消费 #可靠投递 #延时投递 #rabbitMQ交换机类型#重复消费#消息积压#消息丢失

    exchange类型: 1, direct 指定direct后, 消息会根据你设置的routeing key(路由键), 发送到对应的队列中 1,新建direct交换机 2,添加队列, 并且绑定路由键 ...

  6. RabbitMQ(五):Exchange交换器--topic

    内容翻译自:RabbitMQ Tutorials Java版 RabbitMQ(一):Hello World程序 RabbitMQ(二):Work Queues.循环分发.消息确认.持久化.公平分发 ...

  7. java实现rabbitmq动态路由/话题模型(topic queues), 生产者 消费者 交换机 消息队列

    在routing路由模型中,我们实现了可以根据routingKey来选择性地将消息发送到对应的消息队列中,但是,这种模型不够灵活,比如最开始只有warn.info.error.三种类型的日志,但后面如 ...

  8. RabbitMQ之交换机的四种类型和属性

    交换机主要包括如下4种类型: Direct exchange(直连交换机) Fanout exchange(扇型交换机) Topic exchange(主题交换机) Headers exchange( ...

  9. RabbitMQ 四种类型发送接收数据方式

    1.基本用法 生产者 1 import pika 2 import sys 3 4 username = 'wt' #指定远程rabbitmq的用户名密码 5 pwd = '111111' 6 use ...

  10. RabbitMQ之交换机

    目录 一.RabbitMQ交换机 1.交换机的由来 ​ 2.交换机类型​ 2.1直连交换机(Direct  Exchange) ​2.2主题交换机(Topic  Exchange) ​2.3扇形交换机 ...

最新文章

  1. 网站推广——网站推广专员浅析企业网站验收和交付要注意哪些问题
  2. hadoop学习-stream-Top K记录
  3. lua 获取时分秒_PMON学用命令
  4. 万物新生(爱回收)递交赴美上市招股书,平台服务收入年复合增长达627.7%
  5. 第三次学JAVA再学不好就吃翔(part83)--泛型类
  6. STL训练 HDU - 1716 Ray又对数字的列产生了兴趣:
  7. 简单工厂和策略模式结合
  8. 机器学习算法之 KNN
  9. 获取本地ip地址适用于windows和Linux环境
  10. 33.JAVA编程思想——JAVA IO File类
  11. 第一章:Python的基本数据类型-第三节:Python中表示“无序”的数据类型
  12. 使用“微服务+云架构”轻松应对系统扩容!
  13. 用oracle的sqlload导入文件到数据库
  14. [转]教你如何在博客园放“可运行代码
  15. Windows下连接Linux的ssh工具有哪些
  16. 支付宝“美团”化 美团“支付宝”化
  17. COT为平台各项功能,进行TOKEN化赋能
  18. 管理软件软件开发_管理在软件开发中的作用
  19. 软件使用:如何用Mac做热点。
  20. 【网络流量识别】【聚类】【二】FCM和GMM—使用聚类技术和性能比较进行网络流量异常检测

热门文章

  1. r语言算巢式设计方差分析_R语言进行方差分析
  2. react 翻书效果_react.js 翻页插件实例代码
  3. 机器人码垛搬运编程程序_一条指令搞定机器人搬运程序
  4. C++ std::lock_guard 自动加锁、释放锁 原理
  5. html th width无效 解决方法
  6. android intent json,如何从android中的Intent服务中的服务器获取Json响应?
  7. Unity3D(二)游戏对象及组件
  8. Java 将鼠标改为图片的两种方法
  9. c语言投票程序设计报告书,C语言程序设计报告书
  10. php图片处理-补全图片链接,在链接前添加ip或其他路径-在正则匹配到的字符串前添加指定字符串