`

RabbitMQ 三种Exchange

 
阅读更多
Direct Exchange – 处理路由键。需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配。这是一个完整的匹配。如果一个队列绑定到该交换机上要求路由键 “dog”,则只有被标记为“dog”的消息才被转发,不会转发dog.puppy,也不会转发dog.guard,只会转发dog。


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);

分享到:
评论

相关推荐

    rabbitmq三种exchange

    在Java中使用RabbitMQ时,通常需要理解并掌握三种主要的Exchange类型:Direct、Fanout和Topic。这三种类型的Exchange各自有不同的路由策略,适应不同的应用场景。 1. **Direct Exchange(直接交换机)** Direct ...

    基于RabbitMQ几种Exchange 模式详解

    在实际应用中,header模式使用较少,本文将对前三种模式进行比较。 一、Fanout Exchange Fanout Exchange是一种简单的Exchange模式,它将所有发送到Exchange的消息转发到与该Exchange绑定的所有Queue上。Fanout ...

    rabbitmq动态绑定exchange,routingKey,queue

    关于rabbitmq的原生api和spring amqp的api的动态绑定exchange,routingKey,queue 说明文地址: http://blog.csdn.net/phantomes/article/details/47284829

    RabbitMQ消息插件rabbitmq_delayed_message_exchange3.7

    **RabbitMQ消息插件:rabbitmq_delayed_message_exchange 3.7** RabbitMQ是一个开源的消息代理和队列服务器,广泛应用于分布式系统中的异步处理、任务队列和消息路由。在某些场景下,我们需要将消息延迟发送,例如...

    SpringBoot整合RabbitMQ基础学习Exchange源码

    在本文中,我们将深入探讨如何在SpringBoot应用中整合RabbitMQ,并重点解析Exchange的相关源码。RabbitMQ是一款开源的消息代理和队列服务器,它使用AMQP(Advanced Message Queuing Protocol)协议,广泛应用于...

    rabbitmq_delayed_message_exchange3.7

    在RabbitMQ 3.7版本中,引入了一个新的特性——延迟消息交换机(Delayed Message Exchange),这为处理定时任务和延迟触发的业务逻辑提供了便利。本文将深入探讨这一功能及其应用场景。 ### 1. 延迟消息交换机介绍 ...

    rabbitmq常用三种模式的配置

    在RabbitMQ中,有三种主要的交换机(exchange)类型,即fanout、direct和topic模式,每种模式对应不同的路由策略,适用于不同场景。接下来,我们将深入探讨这三种模式及其配置。 1. **Fanout模式**:这是最简单的...

    springboot+RabbitMQ三种模式demo

    在本文中,我们将深入探讨如何在SpringBoot应用中使用RabbitMQ实现Direct、Topic和Fanout这三种消息队列模式。RabbitMQ是一款强大的开源消息代理和队列服务器,广泛应用于分布式系统中的异步处理和解耦。SpringBoot...

    rabbitmq_delayed_message_exchange-20171215-3.6.x.ez.zip

    在这个场景中,我们关注的是“rabbitmq_delayed_message_exchange-20171215-3.6.x.ez.zip”这个压缩包,它包含了RabbitMQ的一个特定功能——延时消息交换机。 延时消息交换机是RabbitMQ的一个插件,允许我们设置...

    rabbitmq教程

    RabbitMQ 三种Exchange.wps————————三种exchange解释及代码 rabbitmq结构.wps————————rabbitmq架构简介 rabbitmq入门.pdf——————入门的文档 RabbitMQ研究与应用.pdf——————简单的研究

    rabbitmq_delayed_message_exchange-3.9.0.ez

    但通过安装`rabbitmq_delayed_message_exchange`插件,我们可以创建一种特殊类型的交换机——延迟交换机,它能够根据消息头中的特定字段决定消息的投递时间。 2. X_DELAYED_TYPE属性:在创建延迟交换机时,需要设置...

    rabbitmq 延迟队列插件 rabbitmq_delayed_message_exchange_3.8.17

    rabbitmq 延迟队列插件 rabbitmq_delayed_message_exchange_3.8.17 解压即用 输入命令进行安装 .\rabbitmq-plugins enable rabbitmq_delayed_message_exchange

    rabbitmq_delayed_message_exchange-3.8.0.zip

    安装一个插件即可:https://www.rabbitmq.com/community-plugins.html ,下载rabbitmq_delayed_message_exchange插件,然后解压放置到RabbitMQ的插件目录...rabbitmq-plugins enable rabbitmq_delayed_message_exchange

    rabbitmq-delayed-message-exchange-20171215-3.6.x.zip

    rabbitmq_delayed_message_exchange-20171215-3.6.x.zip 是一个为RabbitMQ设计的插件压缩包,旨在为RabbitMQ添加延迟消息交换功能; 以下是几个典型的使用场景示例: 订单超时处理: 当用户下单后未及时支付时,...

    rabbitmq_delayed_message_exchange-20171201-3.7.x.ez

    【RabbitMQ】延时队列插件(delayed_message_exchange) 查找Docker容器中的RabbitMQ镜像 2.上传rabbitmq_delayed_message_exchange-20171201-3.7.x.ez插件到Linux文件夹中 3.拷贝插件文件到rabbitMQ的Docker容器中

    rabbitmq_delayed_message_exchange-3.8.0.ez.zip

    标题中提到的"rabbitmq_delayed_message_exchange-3.8.0.ez.zip"是一个针对RabbitMQ 3.8X系列的延时队列插件安装包。这个插件允许我们创建特殊类型的交换机,这些交换机可以将消息放入一个具有特定延迟时间的队列,...

    rabbitmq_delayed_message_exchange-3.9.0.zip

    截止2021.08.19日适配官网最新版rabbitmq3.9.3的消息延时队列插件,包内含有rabbitmq_delayed_message_exchange-3.9.0.ez格式、zip格式、tar.gz格式安装包任你选择~~

    rabbitmq_delayed_message_exchange-3.8.0 延迟队列插件

    RabbitMQ延迟队列插件,即rabbitmq_delayed_message_exchange-3.8.0,是一个针对RabbitMQ消息代理的扩展,旨在提供一种机制,使得消息能够在特定延迟后才被投递到相应的队列。这个功能在很多业务场景中非常有用,...

    rabbitmq-server-windows-3.8.9,内含延迟插件(rabbitmq_delayed_message_exchange-3.8.0.ez)

    在这个“rabbitmq-server-windows-3.8.9”压缩包中,包含了RabbitMQ服务器的Windows版本,以及一个延迟消息插件“rabbitmq_delayed_message_exchange”。 RabbitMQ延迟插件“rabbitmq_delayed_message_exchange”是...

Global site tag (gtag.js) - Google Analytics