设置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);
// normalExchange
channel.exchangeDeclare("normalExchange", "direct", true, false, null);
// 队列属性设置TTL
channel.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();
}
}