rabbitmq+spring boot,我在配置中配置了重试间隔时间,但是不起作用是什么原因?

#重试间隔时间(单位毫秒)spring.rabbitmq.listener.simple.retry.initial-interval=5000@Overridepubl... #重试间隔时间(单位毫秒)
spring.rabbitmq.listener.simple.retry.initial-interval=5000

@Override
public void onMessage( Message message, Channel channel) throws Exception{
long tag = message.getMessageProperties().getDeliveryTag();
String str = new String(message.getBody());
System.out.println("接收到来自topic.messagesPC队列的消息:"+str);
String[] strings = StringUtils.split(str, "\\|");
System.out.println("分割之后出现的新string:........"+strings[0]);
System.out.println("分割之后出现的新string:........"+strings[1]);
try {
channel.basicNack(tag, false, true);
System.out.println("消费异常,正在重试!");
} catch (Exception e) {
// channel.basicReject(tag,true);
System.out.println("-------------------------");
}
// System.out.println("消费结束!");
}
展开
 我来答
百度网友3f0ff69
2019-04-30 · 超过60用户采纳过TA的回答
知道小有建树答主
回答量:145
采纳率:0%
帮助的人:16.3万
展开全部
在介绍具体的实现思路之前,我们先来介绍一下RabbitMQ的两个特性,一个是Time-To-Live Extensions,另一个是Dead Letter Exchanges。
Time-To-Live Extensions
RabbitMQ允许我们为消息或者队列设置TTL(time to live),也就是过期时间。TTL表明了一条消息可在队列中存活的最大时间,单位为毫秒。也就是说,当某条消息被设置了TTL或者当某条消息进入了设置了TTL的队列时,这条消息会在经过TTL秒后“死亡”,成为Dead Letter。如果既配置了消息的TTL,又配置了队列的TTL,那么较小的那个值会被取用。更多资料请查阅官方文档。
Dead Letter Exchange
刚才提到了,被设置了TTL的消息在过期后会成为Dead Letter。其实在RabbitMQ中,一共有三种消息的“死亡”形式:
消息被拒绝。通过调用basic.reject或者basic.nack并且设置的requeue参数为false。
消息因为设置了TTL而过期。
消息进入了一条已经达到最大长度的队列。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式