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队列的主要内容,如果未能解决你的问题,请参考以下文章

消息队列之RabbitMQ-分布式部署

celery+rabbitmq分布式消息队列的使用

快速入门分布式消息队列之 RabbitMQ(下)

消息队列_RabbitMQ-0001.RabbitMQ消息代理/队列服务器快速安全部署?

快速入门分布式消息队列之 RabbitMQ(中)

消息队列之RabbitMQ