其他分享
首页 > 其他分享> > RabbitMq确认消费

RabbitMq确认消费

作者:互联网

    @Bean
    public RabbitTemplate rabbitTemplate(CachingConnectionFactory factory) {
//        log.info("caching factory: {}", factory.getChannelCacheSize());
        RabbitTemplate rabbitTemplate = new RabbitTemplate(factory);


        /**
         * 当mandatory标志位设置为true时
         * 如果exchange根据自身类型和消息routingKey无法找到一个合适的queue存储消息
         * 那么broker会调用basic.return方法将消息返还给生产者
         * 当mandatory设置为false时,出现上述情况broker会直接将消息丢弃
         */
        rabbitTemplate.setMandatory(true);
//        rabbitTemplate.setReturnsCallback(rabbitReturnCallback);
        //使用单独的发送连接,避免生产者由于各种原因阻塞而导致消费者同样阻塞
        rabbitTemplate.setUsePublisherConnection(true);
        //设置消息为json
//        rabbitTemplate.setMessageConverter(jackson2JsonMessageConverter());
        return rabbitTemplate;
    }

 

 //持久化非自动删除
@Bean
    public DirectExchange DirectExchange() {
        return new DirectExchange("direct_order_exchange", true, false);
    }

 

//队列持久化
    @Bean
    public Queue directemail() {
        return new Queue("email.direct.queue", true);
    }

 

//队列和通道通过路由绑定
    @Bean
    public Binding emailBind() {
        return BindingBuilder.bind(directemail()).to(DirectExchange()).with("email");
    }

 

   //业务发送方

 @Autowired
    private RabbitTemplate rabbitTemplate;

    public void makeOrder() {
        //1根据商品id查询库存
        //2保存订单
        String orderId= UUID.randomUUID().toString();
        System.out.println("订单ok");
        String exchangeName="direct_order_exchange";  //direct_order_exchange
        String tpoicKey="email";
        rabbitTemplate.convertAndSend(exchangeName,tpoicKey,orderId);
        //确认下消费的信号
        rabbitTemplate.setConfirmCallback(new RabbitTemplate.ConfirmCallback() {
            @Override
            public void confirm(CorrelationData correlationData, boolean ack, String cause) {
                if(!ack){
                    System.out.println("发送消息失败:"+cause);
                    throw  new RuntimeException("发送异常:"+cause);
                }
            }
        });


    }

 

标签:rabbitTemplate,RabbitTemplate,消费,return,确认,RabbitMq,new,true,public
来源: https://www.cnblogs.com/wangbiaohistory/p/15259484.html