Artemis逾期消息(14)

    可以在发送消息时设置消息的存活时间。Artemis将不会投递超过存活时间的消息。如果消息在达到存活时间后还未被投递,服务器可以丢弃该消息。可以为Artemis分配一个逾期地址,以便在消息逾期后从队列中删除并发送到逾期地址。多个不同的队列可以绑定到同一个逾期地址,这些逾期消息可以被消费用于进一步的检测。

CORE API

    使用Artemis CORE API客户端可以直接在消息里面设置过期时间。如:

// message will expire in 5000ms from now
message.setExpiration(System.currentTimeMillis() + 5000);

    JMS生产者可以通过设置TimeToLive来设置:

// messages sent by this producer will be retained for 5s (5000ms) before expiration
producer.setTimeToLive(5000);

    通过逾期队列消费的逾期消息有如下属性:

  • _AMQ_ORIG_ADDRESS:包含逾期消息的原始地址的String属性值
  • _AMQ_ORIG_QUEUE:包含逾期消息的原始队列的String属性值
  • _AMQ_ACTUAL_EXPIRY:包含逾期消息的实际到期时间的Long属性值

配置逾期地址

    逾期地址由address-setting中定义:

<!-- expired messages in exampleQueue will be sent to the expiry address expiryQueue -->
<address-setting match="exampleQueue">
   <expiry-address>expiryQueue</expiry-address>
</address-setting>

    如果消息逾期且未定义逾期地址,逾期消息将从队列中移除并且被丢弃。

    检测线程将定期检测队列中消息是否已经逾期,在broker.xml中定义这些配置:

  • message-expiry-scan-period:检测队列消息是否逾期的频率(单位ms,默认为30000ms,设置-1禁用检测线程)
  • message-expiry-thread-priority:检测线程的优先级(必须介于1~10之间,10为最高优先级,默认值为3)

注:此系列文章为Apache Artemis V2.6.2官方使用文档的简要翻译文档(非完全按照官方文档排版进行翻译,有删减),个人能力有限如有错误请谅解。源文档地址:http://activemq.apache.org/artemis/docs/latest/index.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值