• rabbitMQ第五种模型(Topic)


    Routing之订阅模型-Topic

      Topic类型的Exchange和Direct相比,都是可以根据RoutingKey把消息路由到不同列队

    只不过Topic类型Exchange可以让列队再绑定RoutingKey的时候使用通配符!

    这种模型RoutingKey一般都是由一个或多个单词组成,多个单词以“.”分割,例如:item.insert

      

      

    生产者:

    public class Provider {
        public static void main(String[] args) throws IOException {
            Connection connection = rabbitMQUtils.getConnection();
            Channel channel = connection.createChannel();
            channel.exchangeDeclare("topics","topic");
            String routingkey="user.save.delete";
            channel.basicPublish("topics",routingkey,null,("这里是topics动态路由模型,routingkey["+routingkey+"]").getBytes());
            rabbitMQUtils.connectionAndchannelClose(connection,channel);
        }
    }

    消费者1:

    public class Customer1 {
        public static void main(String[] args) throws IOException {
            Connection connection = rabbitMQUtils.getConnection();
            Channel channel = connection.createChannel();
            channel.exchangeDeclare("topics","topic");
            String queue = channel.queueDeclare().getQueue();
            channel.queueBind(queue,"topics","user.*");
            channel.basicConsume(queue,true,new DefaultConsumer(channel){
                @Override
                public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                    super.handleDelivery(consumerTag, envelope, properties, body);
                    System.out.println("消费者-1"+new String(body));
                }
            });
        }
    }

    消费者2:

    public class Customer2 {
        public static void main(String[] args) throws IOException {
            Connection connection = rabbitMQUtils.getConnection();
            Channel channel = connection.createChannel();
            channel.exchangeDeclare("topics","topic");
            String queue = channel.queueDeclare().getQueue();
            channel.queueBind(queue,"topics","user.#");
            channel.basicConsume(queue,true,new DefaultConsumer(channel){
                @Override
                public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                    super.handleDelivery(consumerTag, envelope, properties, body);
                    System.out.println("消费者-2"+new String(body));
                }
            });
        }
    }
  • 相关阅读:
    脚本执行策略设置
    获取日期与时间戳小笔记
    Intellij IDEA部分简介
    Intellij IDEA脚本参数化、关联、检查点
    LR中的时间戳
    LeetCode 35.Search Insert Position
    LeetCode 34.Search for a Range
    LeetCode 33.Search in Rotated Sorted Array(M)
    LeetCode 81.Search in Rotated Sorted Array II(M)
    LeetCode 278.First Bad Version(E)(P)
  • 原文地址:https://www.cnblogs.com/yz-bky/p/13060198.html
Copyright © 2020-2023  润新知