jboot中使用rabbitmq消费消息失败的话如何重回队列

jboot中使用rabbitmq消费消息失败的话如何重回队列

@Slf4j
public class MyListener implements JbootmqMessageListener {
    @Override
    public void onMessage(String channel, Object message) {
        log.debug(">>>消费[Q] {} [M]{}", channel, message);
    }
}

如图jboot中消费者监听队列后处理消息在onMessage 方法中消费,如果消费不成功,比如请求外部资源失败,则将此消息重回队列,请问如何处理呀?原想着通过

channel.basicNack(envelope.getDeliveryTag(), false, true);

但是上述法中好像没法获取到channel.

请问大家 有好办法吗?@海哥

评论区

海哥

2021-12-22 11:25

等下个版本吧,可以直接在 onMessage 里获取 channel 了

124653847atqq.com

2021-12-23 08:35

海哥

2021-12-31 10:19

基于 v3.13.x 的 jboot,可以这么来写:


@Slf4j
public class MyListener implements JbootmqMessageListener {
@Override
public void onMessage(String channel, Object message,MessageContext context) {
JbootRabbitmqMessageContext msgContext = (JbootRabbitmqMessageContext)context;

msgContext.getChannel().basicNack(......)
}
}

124653847atqq.com

2022-01-11 00:21