RabbitMQ队列
Posted 大大的男孩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RabbitMQ队列相关的知识,希望对你有一定的参考价值。
TTL队 列
如果设置了消息的过期时间,也设置了队列的过期时间,它以时间短的为准。
队列过期后,会将队列中所有消息全部移除。
消息属性设置TTL(消息单独过期)
使用参数expiration(单位:ms 毫秒)来设置单个消息的过期时间。
@SpringBootTest(classes = TestApplication.class)
@Component
@Slf4j
public class TTLExpiredTest
@Autowired
private RabbitTemplate rabbitTemplate;
private static final String MESSAGE = "testTTLExpired, web.exchange.three message";
/**
* 如果设置了消息的过期时间,也设置了队列的过期时间,它以时间短的为准。
* 队列过期后,会将队列中所有消息全部移除。
*/
@Test
public void testTTLExpired()
MessageProperties messageProperties = new MessageProperties();
// 设置单个消息过期60s
messageProperties.setExpiration("60000");
Message message = new Message(MESSAGE.getBytes(StandardCharsets.UTF_8), messageProperties);
rabbitTemplate.convertAndSend("web.exchange.three", "", message);
/* rabbitTemplate.convertAndSend("web.exchange.four", "", "testTTLExpired,是否会移除过期的消息");
rabbitTemplate.convertAndSend("web.exchange.four", "", message);
rabbitTemplate.convertAndSend("web.exchange.four", "", "testTTLExpired,是否会移除过期的消息");*/
队列设置消息TTL(队列统一过期)
使用参数 x-message-ttl (单位:ms 毫秒)对整个队列消息统一过期。
1、RabbitMQ界面显示过期标识
2、配置文件设置(starter-rabbitmq)
rabbitmq:
rabbit-infos:
- routing-key: web.socket
queue:
name: web.queue.test
arguments:
x-message-ttl: 5000
exchange:
name: web.exchange.test
type: HEADERS
以上是关于RabbitMQ队列的主要内容,如果未能解决你的问题,请参考以下文章