能否以小时或天为单位配置expiry-delay参数而非使用毫秒?
如何用小时/天为单位配置ActiveMQ Artemis的expiry-delay参数
ActiveMQ Artemis的expiry-delay参数默认只接受毫秒值,但有几种方式可以实现用小时或天来配置,不用手动换算:
直接写换算后的毫秒数+注释:如果不想折腾,直接把小时/天数转换成毫秒,加上注释说明对应的时间,方便后续维护。比如:
<address-setting match="asdf"> ... <!-- 1小时 = 3600秒 × 1000毫秒/秒 = 3600000毫秒 --> <expiry-delay>3600000</expiry-delay> <expiry-address>ExpiryQueue</expiry-address> ... </address-setting>用系统属性占位符动态传入:在XML里用
${}占位符,启动时通过JVM参数传入换算好的值,或者在启动脚本里自动计算。比如:
配置文件:<address-setting match="asdf"> ... <!-- 默认1天(86400000毫秒),可通过JVM参数-Dmy.expiry.delay覆盖 --> <expiry-delay>${my.expiry.delay:86400000}</expiry-delay> <expiry-address>ExpiryQueue</expiry-address> ... </address-setting>启动时传入2小时的参数:
./artemis run -Dmy.expiry.delay=7200000使用时间单位后缀(Artemis 2.19.0+):从Artemis 2.19.0版本开始,支持直接在配置中写带时间单位的后缀,不用换算毫秒。支持的单位包括:
ms(毫秒)、s(秒)、m(分钟)、h(小时)、d(天)。比如:<address-setting match="asdf"> ... <expiry-delay>1h</expiry-delay> <!-- 配置为1小时 --> <!-- 或者 <expiry-delay>2d</expiry-delay> 表示2天 --> <expiry-address>ExpiryQueue</expiry-address> ... </address-setting>
内容的提问来源于stack exchange,提问作者Gampa Sivakumar
相关产品推荐
相关产品推荐

