当前位置: 代码迷 >> 综合 >> RabbitMQ过期时间(TTL)
  详细解决方案

RabbitMQ过期时间(TTL)

热度:67   发布时间:2023-10-08 18:15:58.0

设置TTL :

root@song-PC:/home/song# rabbitmqctl set_policy TTL ".*" '{"message-ttl":1000}' --apply-to queues
Setting policy "TTL" for pattern ".*" to "{\"message-ttl\":1000}" with priority "0" ...

 1. 队列属性中设置TTL

package com.song.songvue.config.message;import com.rabbitmq.client.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeoutException;/*** 生产者客户端代码*/
public class RabbitProducer {private static final Logger logger = LoggerFactory.getLogger(RabbitProducer.class);private static final String IP_ADDRESS = "192.168.10.110";private static final int PORT = 5672;public static void main(String[] args) throws IOException, TimeoutException {ConnectionFactory factory = new ConnectionFactory();factory.setHost(IP_ADDRESS);factory.setPort(PORT);factory.setUsername("root");factory.setPassword("1234567");// 创建连接Connection connection = factory.newConnection();// 创建信道Channel channel = connection.createChannel();// 设置过期时间 TTL (Time to Live)Map<String, Object> params = new HashMap<>();params.put("x-message-ttl", 6000);// normalExchangechannel.exchangeDeclare("normalExchange", "direct", true, false, null);// 队列属性设置TTLchannel.queueDeclare("normalQueue", true, false, false, params);channel.queueBind("normalQueue", "normalExchange", "normalKey");channel.basicPublish("normalExchange", "normalKey",MessageProperties.PERSISTENT_TEXT_PLAIN, "normalKey is running ok feaf ".getBytes());// 关闭资源channel.close();connection.close();}
}