第十二章 综合实战-主题模式+延迟消息-实现新商家规定时间内上架商品检查

第1集 案例实战-延迟消息实现业务逻辑介绍

简介:讲解RabbitMQ的案例实战业务逻辑介绍

  • 背景
 
 
 
xxxxxxxxxx
 
 
 
 
JD、淘系、天猫、拼多多电商平台,规定新注册的商家,审核通过后需要在【规定时间】内上架商品,否则冻结账号。
 
 
  • 使用RabbitMQ实现

image-20210116101413182

 

 

 

 

 

 

 

第2集 案例实战-SpringBoot2.X+RabbitMQ延迟消息配置开发

简介:讲解RabbitMQ的案例实战配置开发

  • 死信交换机和死信队列开发
 
 
 
xxxxxxxxxx
 
 
 
    /**
     * 死信队列
     */
    public static final String LOCK_MERCHANT_DEAD_QUEUE = "lock_merchant_dead_queue";
    /**
     * 死信交换机
     */
    public static final String LOCK_MERCHANT_DEAD_EXCHANGE = "lock_merchant_dead_exchange";
    /**
     * 进入死信队列的路由key
     */
    public static final String LOCK_MERCHANT_ROUTING_KEY = "lock_merchant_routing_key";
    /**
     * 创建死信交换机
     * @return
     */
    @Bean
    public Exchange lockMerchantDeadExchange(){
        return new TopicExchange(LOCK_MERCHANT_DEAD_EXCHANGE,true,false);
    }
    /**
     * 创建死信队列
     * @return
     */
    @Bean
    public Queue lockMerchantDeadQueue(){
        return QueueBuilder.durable(LOCK_MERCHANT_DEAD_QUEUE).build();
    }
    /**
     * 绑定死信交换机和死信队列
     * @return
     */
    @Bean
    public Binding lockMerchantBinding(){
        return new Binding(LOCK_MERCHANT_DEAD_QUEUE,Binding.DestinationType.QUEUE,
                LOCK_MERCHANT_DEAD_EXCHANGE,LOCK_MERCHANT_ROUTING_KEY,null);
    }
 
 
  • topic交换机和队列开发, 绑定死信交换机
 
 
 
xxxxxxxxxx
 
 
 
 
    /**
     * 普通队列,绑定的个死信交换机
     */
    public static final String NEW_MERCHANT_QUEUE = "new_merchant_queue";
    /**
     * 普通的topic交换机
     */
    public static final String NEW_MERCHANT_EXCHANGE = "new_merchant_exchange";
    /**
     * 路由key
     */
    public static final String NEW_MERCHANT_ROUTIING_KEY = "new_merchant_routing_key";
    /**
     * 创建普通交换机
     * @return
     */
    @Bean
    public Exchange newMerchantExchange(){
        return new TopicExchange(NEW_MERCHANT_EXCHANGE,true,false);
    }
    /**
     * 创建普通队列
     * @return
     */
    @Bean
    public Queue newMerchantQueue(){
        Map<String,Object> args = new HashMap<>(3);
        //消息过期后,进入到死信交换机
        args.put("x-dead-letter-exchange",LOCK_MERCHANT_DEAD_EXCHANGE);
        //消息过期后,进入到死信交换机的路由key
        args.put("x-dead-letter-routing-key",LOCK_MERCHANT_ROUTING_KEY);
        //过期时间,单位毫秒
        args.put("x-message-ttl",10000);
        return QueueBuilder.durable(NEW_MERCHANT_QUEUE).withArguments(args).build();
    }
    /**
     * 绑定交换机和队列
     * @return
     */
    @Bean
    public Binding newMerchantBinding(){
        return new Binding(NEW_MERCHANT_QUEUE,Binding.DestinationType.QUEUE,
                NEW_MERCHANT_EXCHANGE,NEW_MERCHANT_ROUTIING_KEY,null);
    }
 
 

 

 

 

 

 

 

 

 

第3集 案例实战-SpringBoot2.X 延迟消息生产和消费实战开发

简介:讲解RabbitMQ的案例实战-消息生产和消费

  • 消息生产

    • 投递到普通的topic交换机
    • 消息过期,进入死信交换机
  • 消息消费

    • 消费者监听死信交换机的队列

image-20210116101413182

 

posted @ 2021-11-24 17:37  老吴IT代码笔记*  阅读(30)  评论(0编辑  收藏  举报