You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ActiveMQ Artemis中配置定时消息?配置后不生效如何解决

问题根因

你混用了ActiveMQ 5和Artemis的配置项,且使用了过时的消息属性,导致定时消息不生效,按以下步骤修正即可:


1. 修正服务端配置

你在bootstrap.xml中添加的schedulerSupport="true"是ActiveMQ 5的配置参数,对Artemis完全无效,可直接删除。Artemis的定时消息功能需要在核心配置文件中开启:

  1. 打开你配置的核心配置文件 /opt/activemq/apache-artemis-home/etc/broker.xml
  2. 找到<core>标签块,添加如下配置开启定时消息功能:
<core>
  <!-- 其他原有配置 -->
  <!-- 单位为字节,这里配置的是10MB,按需调整即可,只要不为-1就会开启定时消息 -->
  <scheduled-message-max-size>10485760</scheduled-message-max-size>
</core>
  1. 保存配置后重启Artemis服务。

2. 修正客户端代码

你使用的_HQ_SCHED_DELIVERY是HornetQ(Artemis的前身)的旧属性名,已经废弃。Artemis下两种常见的定时配置方式如下,根据你使用的客户端协议选择即可:

如果你用Artemis原生客户端/核心协议

直接使用Artemis标准属性_AMQ_SCHED_DELIVERY,值为目标投递时间的毫秒级时间戳,和你原有逻辑一致,示例:

try { 
    ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://10.0.34.96:61616");
    Connection connection = factory.createConnection();
    connection.start();
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    Destination queue = session.createQueue("TEST");
    MessageProducer producer = session.createProducer(queue);
    producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
    // 计算50秒后投递的时间戳
    long schedDelivery = System.currentTimeMillis() + 50000;
    String msg = "Hello World (test SCHED_DELIVERY) " + schedDelivery;
    TextMessage message = session.createTextMessage(msg);
    // 使用Artemis标准定时投递属性
    message.setLongProperty("_AMQ_SCHED_DELIVERY", schedDelivery);
    System.out.println("Producer Sent: " + msg);
    producer.send(message);
    session.close();
    connection.close();
} catch (Exception ex) {
    ex.printStackTrace();
}

如果你用ActiveMQ 5客户端通过OpenWire协议对接Artemis

可以直接使用你注释掉的ScheduledMessage.AMQ_SCHEDULED_DELAY常量,值为需要延迟的毫秒数,不需要手动计算时间戳:

// 延迟50秒投递
message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, 50000);

验证方法

修改完后发送消息,可先登录Artemis控制台http://10.0.34.96:8161/console,查看TEST队列的消息数,50秒内消息会停留在队列中不会被消费,到期后才会投递到消费者,就说明配置生效。

内容的提问来源于stack exchange,提问作者user1625812

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 03:24:02