RabbitMQ03_Springboot整合RabbitMQ实现发布与订阅模式、路由模式、通配符模式(四)

③. SpringBoot案例 - 通配符模式


  • ①. 生产者代码如下


    //3. topic模式
    public void makeTopicOrder(Long userId, Long productId){
        // 1: 模拟用户下单
        String orderNumer = UUID.randomUUID().toString();
        System.out.println("用户 " + userId + ",订单编号是:" + orderNumer);
        // 发送订单信息给RabbitMQ Sms和微信发送消息
        // 匹配规则:#.sms.#、#.weChat.#
        rabbitTemplate.convertAndSend("topic_order_exchange", "weChat.sms", orderNumer);
    }


②. 消费者使用注解的方式替换配置类


// bindings其实就是用来确定队列和交换机绑定关系
@RabbitListener(bindings =@QueueBinding(
        // email.fanout.queue 是队列名字,这个名字你可以自定随便定义。
        value = @Queue(value = "email.topic.queue",autoDelete = "false"),
        // order.fanout 交换机的名字 必须和生产者保持一致
        exchange = @Exchange(value = "topic_order_exchange",
                // 这里是确定的rabbitmq模式是:fanout 是以广播模式 、 发布订阅模式
                type = ExchangeTypes.TOPIC),
        key = "#.email.#"
))
@Component
public class TopicEmailConsumer {
    @RabbitHandler
    public void reviceMessage(String message){
        System.out.println("email------topic模式:"+message);
    }
}


@Component
// bindings其实就是用来确定队列和交换机绑定关系
@RabbitListener(bindings =@QueueBinding(
        // email.fanout.queue 是队列名字,这个名字你可以自定随便定义。
        value = @Queue(value = "sms.topic.queue",autoDelete = "false"),
        // order.fanout 交换机的名字 必须和生产者保持一致
        exchange = @Exchange(value = "topic_order_exchange",
                // 这里是确定的rabbitmq模式是:fanout 是以广播模式 、 发布订阅模式
                type = ExchangeTypes.TOPIC),
        key = "#.sms.#"
))
public class TopicSmsConsumer{
    @RabbitHandler
    public void reviceMessage(String message){
        System.out.println("sms------topic模式:"+message);
    }
}


@Component
// bindings其实就是用来确定队列和交换机绑定关系
@RabbitListener(bindings =@QueueBinding(
        // email.fanout.queue 是队列名字,这个名字你可以自定随便定义。
        value = @Queue(value = "weChat.topic.queue",autoDelete = "false"),
        // order.fanout 交换机的名字 必须和生产者保持一致
        exchange = @Exchange(value = "topic_order_exchange",
                // 这里是确定的rabbitmq模式是:fanout 是以广播模式 、 发布订阅模式
                type = ExchangeTypes.TOPIC),
        key = "#.sms.#"
))
public class TopicWeChatConsumer {
    @RabbitHandler
    public void reviceMessage(String message){
        System.out.println("weChat------topic模式:"+message);
    }
}


RabbitMQ03_Springboot整合RabbitMQ实现发布与订阅模式、路由模式、通配符模式(四)


RabbitMQ03_Springboot整合RabbitMQ实现发布与订阅模式、路由模式、通配符模式(四)

上一篇:KUBERNETES01_部署方式的变迁、为什么用Kubernetes、工作原理、组件交互原理、动画演示(四)


下一篇:阿里云服务器怎么重装系统?操作步骤如下