消息存活时间的定义、应用场景、注意事项

消息存活时间的定义、应用场景、注意事项

什么是消息存活时间在云消息队列 RabbitMQ 版中,消息存活时间用于限制消息在Queue中可以存在的时间,如果消息在Queue中存在的时间超过了设置的消息存活时间,消息将会被进行如下处理:

若您未给Queue设置死信Exchange,消息将被Queue直接丢弃。

若您为Queue设置了死信Exchange,则消息被丢弃后会被转发到死信Exchange,由死信Exchange将其路由到目标Queue。您可以在目标Queue获取该消息。更多信息,请参见死信Exchange。

应用场景消息存活时间可用于保障消息流通性。例如,某应用的消息在某些特定时间会剧烈增加,如果您的业务可以接受消息丢失,您可以通过设置消息存活时间丢弃堆积的消息,从而保障消息流通性。

消息存活时间设置规则云消息队列 RabbitMQ 版支持通过x-message-ttl或expiration设置消息存活时间,不支持通过rabbitmqctl工具的policy进行设置。

云消息队列 RabbitMQ 版支持在创建Queue时为Queue设置消息存活时间,同时支持在消息发送时为消息设置存活时间。

如果两个同时设置,则取最小的时间作为消息的存活时间。

延时消息的实际存活时间=min{消息级存活时间, Queue级别存活时间}+延时时间。延时消息的具体信息,请参见延时消息。

消息存活时间的取值上限和实例的定时时长一致;且取值必须为非负整型数,单位为毫秒。

如果消息存活时间被设置为0,则消息到达Queue时,除非立即被消费者消费,否则会被立即丢弃或转发到死信Exchange。

设置方式云消息队列 RabbitMQ 版支持您通过以下方式设置消息存活时间:

云消息队列 RabbitMQ 版控制台

您可以通过云消息队列 RabbitMQ 版控制台为指定Queue设置消息存活时间。具体操作,请参见Queue管理。

OpenAPI Explorer

您可以通过OpenAPI Explorer调用CreateQueue接口,为指定Queue设置消息存活时间。更多信息,请参见CreateQueue。

开源RabbitMQ SDK

您可以通过开源RabbitMQ SDK为指定Queue或某条消息设置消息存活时间。更多信息,请参见SDK列表。示例代码如下:

通过x-message-ttl设置队列级别的消息存活时间

Map props = new HashMap();

props.put("x-message-ttl", 1000);

channel.queueDeclare("myqueue", false, false, false, props);通过expiration设置消息级别的消息存活时间

byte[] messageBodyBytes = "test".getBytes();

AMQP.BasicProperties properties = new AMQP.BasicProperties.Builder()

.expiration("1000")

.build();

channel.basicPublish("myqueue", peoperties, messageBodyBytes);

相关推荐

八字排盘软件十大排行,算命APP热门榜单揭晓
365彩票手机版下载

八字排盘软件十大排行,算命APP热门榜单揭晓

📅 07-01 👁️ 5269
魔兽世界怀旧服战歌报告三个npc信使坐标分别是哪里?
365app安卓客户端下载

魔兽世界怀旧服战歌报告三个npc信使坐标分别是哪里?

📅 07-13 👁️ 6573
杯子拧不开盖子怎么办,水杯盖子拧不开的解决方案是什么
一体机电脑什么牌子好?10大一体台式机品牌排行榜
365彩票手机版下载

一体机电脑什么牌子好?10大一体台式机品牌排行榜

📅 08-09 👁️ 5631
放逐之城什么水果最好(放逐之城哪种农作物好)
365一直提款维护中

放逐之城什么水果最好(放逐之城哪种农作物好)

📅 08-04 👁️ 933
萌小明租车ios版
365app安卓客户端下载

萌小明租车ios版

📅 08-06 👁️ 5809