RabbitMQ 三种Exchange
来源:互联网 发布:天津网络大学 编辑:程序博客网 时间:2024/06/01 03:57
RabbitMQ 三种Exchange
Direct Exchange – 处理路由键。需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配。这是一个完整的匹配。如果一个队列绑定到该交换机上要求路由键 “dog”,则只有被标记为“dog”的消息才被转发,不会转发dog.puppy,也不会转发dog.guard,只会转发dog。
Fanout Exchange – 不处理路由键。你只需要简单的将队列绑定到交换机上。一个发送到交换机的消息都会被转发到与该交换机绑定的所有队列上。很像子网广播,每台子网内的主机都获得了一份复制的消息。Fanout交换机转发消息是最快的。
Topic Exchange – 将路由键和某模式进行匹配。此时队列需要绑定要一个模式上。符号“#”匹配一个或多个词,符号“*”匹配不多不少一个词。因此“audit.#”能够匹配到“audit.irs.corporate”,但是“audit.*” 只会匹配到“audit.irs”。我在RedHat的朋友做了一张不错的图,来表明topic交换机是如何工作的:
- Channel channel = connection.createChannel();
- channel.exchangeDeclare("exchangeName", "direct"); //direct fanout topic
- channel.queueDeclare("queueName");
- channel.queueBind("queueName", "exchangeName", "routingKey");
- byte[] messageBodyBytes = "hello world".getBytes();
- //需要绑定路由键
- channel.basicPublish("exchangeName", "routingKey", MessageProperties.PERSISTENT_TEXT_PLAIN, messageBodyBytes);
Fanout Exchange – 不处理路由键。你只需要简单的将队列绑定到交换机上。一个发送到交换机的消息都会被转发到与该交换机绑定的所有队列上。很像子网广播,每台子网内的主机都获得了一份复制的消息。Fanout交换机转发消息是最快的。
- Channel channel = connection.createChannel();
- channel.exchangeDeclare("exchangeName", "fanout"); //direct fanout topic
- channel.queueDeclare("queueName");
- channel.queueBind("queueName", "exchangeName", "routingKey");
- channel.queueDeclare("queueName1");
- channel.queueBind("queueName1", "exchangeName", "routingKey1");
- byte[] messageBodyBytes = "hello world".getBytes();
- //路由键需要设置为空
- channel.basicPublish("exchangeName", "", MessageProperties.PERSISTENT_TEXT_PLAIN, messageBodyBytes);
Topic Exchange – 将路由键和某模式进行匹配。此时队列需要绑定要一个模式上。符号“#”匹配一个或多个词,符号“*”匹配不多不少一个词。因此“audit.#”能够匹配到“audit.irs.corporate”,但是“audit.*” 只会匹配到“audit.irs”。我在RedHat的朋友做了一张不错的图,来表明topic交换机是如何工作的:
- Channel channel = connection.createChannel();
- channel.exchangeDeclare("exchangeName", "topic"); //direct fanout topic
- channel.queueDeclare("queueName");
- channel.queueBind("queueName", "exchangeName", "routingKey.*");
- byte[] messageBodyBytes = "hello world".getBytes();
- channel.basicPublish("exchangeName", "routingKey.one", MessageProperties.PERSISTENT_TEXT_PLAIN, messageBodyBytes);
1 0
- RabbitMQ 三种Exchange
- RabbitMQ 三种Exchange
- RabbitMQ 三种Exchange
- RabbitMQ 三种Exchange
- RabbitMQ 三种Exchange
- RabbitMQ 三种Exchange
- RabbitMQ 三种Exchange
- RabbitMQ三种Exchange
- RabbitMQ 三种Exchange 原理
- RabbitMQ(1) 三种exchange总结
- RabbitMQ三种Exchange模式(fanout,direct,topic)介绍
- RabbitMQ三种Exchange模式(fanout,direct,topic)
- RabbitMQ三种Exchange模式(fanout,direct,topic)
- rabbitmq direct、fanout、topic 三种Exchange java 代码比较
- 【RabbitMQ】——三种Exchange模式(Fanout、Direct、Topic)
- 【RabbitMQ】三种类型的Exchange
- RabbitMQ的四种ExChange
- RabbitMQ:四种ExChange用法
- Android L 新特性
- osgearth API编程动态建立一个地球【转】
- Android学习第八弹之改变状态栏的颜色使其与APP风格一体化
- 22-IO流-29-IO流(流的操作基本规律-需求体现-2)
- 第二章 线性表
- RabbitMQ 三种Exchange
- 360随身WiFi2在Ubuntu 12.04上使用
- 算法竞赛入门经典:第五章 基础题目选解 5.2 Tex
- 22-IO流-30-IO流(转换流的编码解码)
- 各种tabLayout
- C#语法笔记
- Codeforces Round #315 (Div. 2) C. Primes or Palindromes?
- 算法竞赛入门经典:第五章 基础题目选解 5.3 周期串
- 开源中国源码学习(六)——ButterKnife的使用