RabbitMQ 三种方式的TTL

TTL说明

RabbitMQ支持三种方式

  • Per-Queue Message TTL (为进入队列的每一条消息设置一个TTL)
  • Queue TTL (队列的TTL,如果在设置的TTL时间内,没有消费者连接,没有消息发送,RabbitMQ会默认其是将要抛弃不用的,会考虑在TTL到期后删除掉该队列)
  • Per-Message TTL (给消息设置TTL,如果设置了就有,没设置就没有)

Per-Queue Message TTL

###配置方式一 我们通过类似配置死信的方式来配置Per-Queue Message TTL。

Map<String, Object> args = new HashMap<String, Object>();
args.put("x-message-ttl", 60000);
channel.queueDeclare("myqueue", false, false, false, args);

###配置方式二 通过设置policy策略来指定(可以直接通过web界面来操作)。

rabbitmqctl set_policy TTL ".*" '{"message-ttl":60000}' --apply-to queues

界面操作

Queue TTL

###配置方式一 通过代码在声明队列的时候指定。

Map<String, Object> args = new HashMap<String, Object>();
args.put("x-expires", 900000);
channel.queueDeclare("myqueue", false, false, false, args);

###配置方式二 通过设置policy策略来指定(可以直接通过web界面来操作)。

rabbitmqctl set_policy expiry ".*" '{"expires":900000}' --apply-to queues

Per-Message TTL

指定TTL

在发送的时候指定properties来指定。如果使用的是Spring AMQP,那么可以通过使用MessageProperties来进行指定。

byte[] messageBodyBytes = "Hello, world!".getBytes();
AMQP.BasicProperties properties = new AMQP.BasicProperties();
properties.setExpiration("60000");
channel.basicPublish("my-exchange", "routing-key", properties, messageBodyBytes);

转载于:https://my.oschina.net/huaxian8812/blog/849857

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值