zoukankan      html  css  js  c++  java
  • RabbitMQ三种Exchange

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

    Java代码  收藏代码
    1. Channel channel = connection.createChannel();  
    2. channel.exchangeDeclare("exchangeName", "direct"); //direct fanout topic  
    3. channel.queueDeclare("queueName");  
    4. channel.queueBind("queueName", "exchangeName", "routingKey");  
    5.   
    6. byte[] messageBodyBytes = "hello world".getBytes();  
    7. //需要绑定路由键  
    8. channel.basicPublish("exchangeName", "routingKey", MessageProperties.PERSISTENT_TEXT_PLAIN, messageBodyBytes);  



    Fanout Exchange – 不处理路由键。你只需要简单的将队列绑定到交换机上。一个发送到交换机的消息都会被转发到与该交换机绑定的所有队列上。很像子网广播,每台子网内的主机都获得了一份复制的消息。Fanout交换机转发消息是最快的。

    Java代码  收藏代码
    1. Channel channel = connection.createChannel();  
    2. channel.exchangeDeclare("exchangeName", "fanout"); //direct fanout topic  
    3. channel.queueDeclare("queueName");  
    4. channel.queueBind("queueName", "exchangeName", "routingKey");  
    5.   
    6. channel.queueDeclare("queueName1");  
    7. channel.queueBind("queueName1", "exchangeName", "routingKey1");  
    8.   
    9. byte[] messageBodyBytes = "hello world".getBytes();  
    10. //路由键需要设置为空  
    11. channel.basicPublish("exchangeName", "", MessageProperties.PERSISTENT_TEXT_PLAIN, messageBodyBytes);  



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

    Java代码  收藏代码
      1. Channel channel = connection.createChannel();  
      2. channel.exchangeDeclare("exchangeName", "topic"); //direct fanout topic  
      3. channel.queueDeclare("queueName");  
      4. channel.queueBind("queueName", "exchangeName", "routingKey.*");  
      5.   
      6. byte[] messageBodyBytes = "hello world".getBytes();  
      7. channel.basicPublish("exchangeName", "routingKey.one", MessageProperties.PERSISTENT_TEXT_PLAIN, messageBodyBytes);  
  • 相关阅读:
    10 个深恶痛绝的 Java 异常。。
    为什么公司宁愿 25K 重新招人,也不给你加到 20K?原因太现实……
    推荐一款代码神器,代码量至少省一半!
    Spring Cloud Greenwich 正式发布,Hystrix 即将寿终正寝。。
    hdu 3853 LOOPS(概率 dp 期望)
    hdu 5245 Joyful(期望的计算,好题)
    hdu 4336 Card Collector(期望 dp 状态压缩)
    hdu 4405 Aeroplane chess(概率+dp)
    hdu 5036 Explosion(概率期望+bitset)
    hdu 5033 Building (单调栈 或 暴力枚举 )
  • 原文地址:https://www.cnblogs.com/hyl8218/p/5727012.html
Copyright © 2011-2022 走看看