Artemis资源管理配置与定时消息(10)

Apache Artemis的资源管理器负责处理JTA事务生命周期,包括在异常情况下回滚旧事务。默认超时为5分钟,可通过修改`transaction-timeout`属性调整。定时消息可以通过设置`_AMQ_SCHED_DELIVERY`属性实现,JMS API示例给出发送定时消息的方法。本文档是官方V2.6.2使用文档的简化翻译。
摘要由CSDN通过智能技术生成

资源管理配置

    Artemis拥有自己的资源管理器,用于处理JTA事务的生命周期。启动事务时,将通知资源管理器并保留事务及其当前状态的记录。在某些情况下,可能出现启动事务但后来被遗忘了。也许客户端异常,再也没有重连。如果发生这种情况,那么事务将无限期的等待。

    Artemis为了处理这类问题,通过配置可以扫描并回滚它找到的任何旧事务。默认值为3000000毫秒(5分钟),即删除任何超过5分钟的事务。可以通过编辑broker.xml中的transaction-timeout属性来更改此超时(值必须以毫秒为单位)。属性transaction-timeout-scan-period配置扫描旧事务的频率(以毫秒为单位)。

    请注意,Apache ActiveMQ Artemis不会单方面回滚任何处于准备状态的XA事务 - 如果确定它们永远不会被事务管理器处理,则必须尝试通过管理API进行回滚。

定时消息

    定时消息于普通消息不同,其将会在未来指定时间进行投递。

 在JMS或CORE API的消息中设定名称为“_AMQ_SCHED_DELIVERY”(或常量Message.HDR_SCHEDULED_DELIVERY_TIME)的消息来实现定时消息,其属性值为long类型,对应必须开始投递消息的时间(单位ms)。

    使用JMS发送定时消息例子如下:

TextMessage message = session.createTextMessage("This is a scheduled message message which will be delivered in 5 sec.");
message.setLongProperty("_AMQ_SCHED_DELIVERY", System.currentTimeMillis() + 5000);
producer.send(message);

...

// message will not be received immediately but 5 seconds later
TextMessage messageReceived = (TextMessage) consumer.receive();

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值