zoukankan      html  css  js  c++  java
  • RabbitMQ:Fanout Exchange

    一.Fanout Exchange相关介绍

    不处理路由键,只需要将简单的将队列绑定到交换机上。

    发送到交换机的消息都会被转发到与该交换机绑定的所有队列上。

    Fanout交换机转发消息是最快的。

    二.消费者

    public static void main(String[] args) throws IOException, TimeoutException, InterruptedException {
            //创建一个连接工厂
            ConnectionFactory connectionFactory = new ConnectionFactory();
            connectionFactory.setHost("192.168.10.132");
            connectionFactory.setPort(5672);
            connectionFactory.setVirtualHost("/");
            //创建连接
            Connection connection = connectionFactory.newConnection();
            //通过连接创建一个Channel
            Channel channel = connection.createChannel();
            //创建一个队列
            String exchangeName = "test_fanout_exchange";
            String exchangeType = "fanout";
            String queueName1 = "fanout1";
            String queueName2 = "fanout2";
            String routingKey = "";
            //声明一个交换机
            channel.exchangeDeclare(exchangeName,exchangeType,true,false,false,null);
            //声明队列
            channel.queueDeclare(queueName1,false,false,false,null);
            channel.queueDeclare(queueName2,false,false,false,null);
            //建立交换机、队列的绑定关系
            channel.queueBind(queueName1,exchangeName,routingKey);
            channel.queueBind(queueName2,exchangeName,routingKey);
            //创建一个消费者
            QueueingConsumer consumer = new QueueingConsumer(channel);
            //设置Channel
            channel.basicConsume(queueName1,true,consumer);
            channel.basicConsume(queueName2,true,consumer);
            //获取消息
            while (true){
                QueueingConsumer.Delivery delivery = consumer.nextDelivery();
                String msg = new String(delivery.getBody());
                System.out.println("消费端:"+msg);
            }
    
        }
    

    三.生产者

        public static void main(String[] args) throws IOException, TimeoutException {
            //创建一个连接工厂
            ConnectionFactory connectionFactory = new ConnectionFactory();
            connectionFactory.setHost("192.168.10.132");
            connectionFactory.setPort(5672);
            connectionFactory.setVirtualHost("/");
            //创建连接
            Connection connection = connectionFactory.newConnection();
            //通过连接创建一个Channel
            Channel channel = connection.createChannel();
            //通过Channel发送数据
            channel.basicPublish("test_fanout_exchange","",null,"test fanout exchange".getBytes());
            channel.basicPublish("test_fanout_exchange","",null,"test fanout exchange".getBytes());
            //关闭连接
            channel.close();
            connection.close();
        }
    

     关系拓扑:

    运行结果:

  • 相关阅读:
    【新梦想Java开发公开课】
    接口自动化框架httprunner(三)--断言
    接口自动化框架httprunner(二)--变量空间(context)作用域
    接口自动化框架httprunner(一)--安装及简单使用
    python+locust性能测试(四)之分布式运行
    安装Resharper 10.0.X 出现 The CrossAppDomainPointer is NULL 错误解决方案之一
    给DNN装SkinTuner扩展时出现Could not load file or assembly 'System.Data.SQLite
    STA和MTA线程模式的区别
    jQuery插件,迅速的实现拖拽功能
    query插件(三):Colorbox–内容播放插件
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/12974722.html
Copyright © 2011-2022 走看看