老师,rabbitTemplate.setReturnCallback()被执行后,消费者还是可以消费到消息

来源:3-13 死信队列详解-2

慕村1156896

2020-04-11

老师rabbitTemplate.setReturnCallback()被执行后消费者还是可以消费到消息这个是什么原因呢

 rabbitTemplate.convertAndSend(RabbitConstants.DELAY_SIGN_EXCHANGE,
                RabbitConstants.DELAY_SIGN_ROUTE_KEY, msgBody, msg -> {
                    //指定消息为持久化消息
                    msg.getMessageProperties().setDeliveryMode(MessageDeliveryMode.PERSISTENT);
                    //消息延迟时间
                    msg.getMessageProperties().setHeader("x-delay", seconds * 1000);
                    return msg;
                }, cData);
        rabbitTemplate.setConfirmCallback((correlationData, ack, cause) -> {
            if (ack) {
                log.info("ack success correlationData: {} cause: {}", correlationData, cause);
            } else {
                //TODO 回调
                log.error("nack correlationData: {}, cause: {}", correlationData, cause);
            }
        });
        rabbitTemplate.setReturnCallback((message, replyCode, replyText, exchange, routingKey) -> {
            log.error("消息体: {}, 响应码: {}, 响应信息: {}, 交换机: {}, 路由key: {}", message, replyCode, replyText, exchange, routingKey);
            //TODO 回调
        });
[ INFO ] [2020-04-11 11:50:15] com.wusong.task.service.impl.TaskServiceImpl [82] - ack success correlationData: CorrelationData [id=90216382859313152] cause: null
[ ERROR] [2020-04-11 11:50:15] com.wusong.task.service.impl.TaskServiceImpl [89] - 消息体: (Body:'[B@761180cb(byte[329])' MessageProperties [headers={spring_returned_message_correlation=90216382859313152}, contentType=application/x-java-serialized-object, contentLength=0, receivedDeliveryMode=PERSISTENT, priority=0, deliveryTag=0]), 响应码: 312, 响应信息: NO_ROUTE, 交换机: ws.delay.exchange, 路由key: ws.delay.route.#
[ INFO ] [2020-04-11 11:50:54] com.wusong.task.service.impl.TaskServiceImpl [108] - 消费者接受消息=MessageBody(source=1, receiveTime=2020-04-11T11:50:55, ackTime=null, message=哇哈哈哈哈哈SDSDSDSD)

写回答

1回答

阿神

2020-04-11

callback 只是生产者发送成功后 rabbitmq 集群broker 给你返回的应答ack ,说明消息已经投递成功或者失败了。消费者当然可以消费消息了

0
0

RabbitMQ精讲 从0到1驾驭RabbitMQ应用与设计

从0到1,全面深入掌握RabbitMQ消息中间件技术

1460 学习 · 443 问题

查看课程