RabbitMq 实现消息过期时间处理

的RabbitMQ 

生产者与消费者具体案例请参照我前面写的案例,本章不做详细介绍,只写局部细节详见   https://blog.csdn.net/u010260737/article/details/84570778

实现方式一,

public static final Boolean durable = true;//设置是否持久化
public static final Boolean exclusive = false;//设置是否排他
public static final Boolean autoDelete = false;//是否自动删除
Map args = new HashMap();
args.put("x-expires", 4000);
channel.queueDeclare(QUEUE_NAME, false, false, false, args);

声明队列时指定相应的参数:X-期满或X-消息-TTL 

queue.declare命令中的x-expires参数控制queue被自动删除前可以处于未使用状态的时间。未使用的意思是queue上没有任何消费者,队列没有被重新声明,并且在过期时间段内未调用过basic.get命令。该方式可用于,例如,RPC-style的回复队列,其中许多队列会被创建出来,但是却从未被使用。 

服务器会确保在过期时间到达后排队被删除,但是不保证删除的动作有多么的及时。在服务器重启后,持久化的队列的超时时间将重新计算。

用于表示超期时间的x-expires参数值以微秒为单位,并且服从和x-message-ttl一样的约束条件,且不能设置为0.所以,如果该参数设置为1000,则表示该队列如果在1秒钟之内未被使用则会被删除。 

实现方式二,

AMQP.BasicProperties.Builder builder = new AMQP.BasicProperties.Builder();
builder.deliveryMode(2);
builder.expiration("5000");
AMQP.BasicProperties properties = builder.build();
channel.basicPublish(EXCHANGE_NAME,ROUTING_KEY,true,properties,message.getBytes());

你可能感兴趣的:(RabbitMq,后端,java服务端配置)