zoukankan      html  css  js  c++  java
  • Rabbitmq消息队列(五) 路由Routing

    1、简介

      在以前一章中,我们可以把一个消息广播给多个接收者。在这一章中,我们会增加一个功能:接收者能够只接收订阅消息中的一个子集。

    2、绑定

      在我们将交换机和队列进行绑定的时候,我们可以添加一个额外的参数:绑定建(routing_key)。绑定建的意义取决于交换机的类型,其中扇形交换机会忽略这个值。

      带绑定建的绑定的格式:

    1 channel.queueBind(queueName, EXCHANGE_NAME, "black");

    3、直连交换机(Direct exchange)

      我们使用的扇型交换机(fanout exchange)没有足够的灵活性,因为它能做的仅仅是广播, 而直连交换机会对绑定键(binding key)和路由键(routing key)进行精确匹配,从而确定消息该分发到哪个队列。

      

      在直连交换机中,多个绑定格式也是合法的:

      

    3、通过直连交换机发送消息

    1 Connection connection = factory.newConnection();
    2 Channel channel = connection.createChannel();
    3 
    4 channel.exchangeDeclare(exchangeName, BuiltinExchangeType.DIRECT);
    5 channel.basicPublish(exchangeName, bindingKey, null, message.getBytes());
    6 System.out.println("发送消息:" + message);
    7 
    8 channel.close();
    9 connection.close();

     4、订阅接收消息

     1 Connection connection = factory.newConnection();
     2 Channel channel = connection.createChannel();
     3 
     4 channel.exchangeDeclare(exchangeName, BuiltinExchangeType.DIRECT);
     5 String queueName = channel.queueDeclare().getQueue();       // 创建一个临时空队列
     6 channel.queueBind(queueName, exchangeName, bindingKey);           // 将交换机和队列进行绑定,告诉交换机将消息发送到我们的队列中
     7 
     8 Consumer consumer = new DefaultConsumer(channel) {
     9     @Override
    10     public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
    11         String message = new String(body, "UTF-8");
    12 
    13         System.out.println("接收到消息:" + message);
    14     }
    15 };
    16 channel.basicConsume(queueName, true, consumer);

    5、运行测试

      这样,接收方就可以接收到指定绑定key的消息了。

  • 相关阅读:
    NPOI操作Excel
    父窗口调用iframe子窗口方法
    js 全选全不选
    常用的几种 SQLServer 分页查询方式实现
    通用简单的 分页 SQL
    C#导出
    delphi xe firemonkey 调用VLC播放器播放视频
    Android版本和API Level对应关系
    Android开发之视频录制1
    Android上实现视频录制
  • 原文地址:https://www.cnblogs.com/origalom/p/8335721.html
Copyright © 2011-2022 走看看