1、死信队列也是⼀个消息队列,它是⽤来存放那些没有成功消费的消息的,通常
当⼀条消息消费失败,MQ就会⾃动进⾏消息重试。⽽如果消息超过最⼤重试次数,MQ就会将这个消息发送到死信队列
RocketMQ的死信队列
2、延时队列就是⽤来存放需要在指定时间被处理的元素的队列,通常可以⽤来处理⼀些具有过期性操作的业务,⽐如⼗分钟内未⽀付则取消订单
RabbitMQ
使⽤:TTL+死信队列 组合实现延迟队列的效果。 RocketMQ 直接实现了延迟队列
1 //延迟消息
2 @RequestMapping("/sendMessage4")
3 public String sendMessage6() { 4
5 // syncSend(String destination, Message<?> message, long timeout, int delayLevel)
6
7 // timeout 超时时间 跟延时时间没关系
8 // int delayLevel 延时时间 1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9 m 10m 20m 30m 1h 2h 级别 1 及 1s,最⼤延时 2h
9 SendResult sendResult1 = rocketMQTemplate.syncSend(topic, message, 2000, 3);
10 System.out.println("延迟消息 = " + sendResult1);
11
12 return "延迟消息发送完成";
13 }