老师,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回答
-
callback 只是生产者发送成功后 rabbitmq 集群broker 给你返回的应答ack ,说明消息已经投递成功或者失败了。消费者当然可以消费消息了
00
相似问题