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

TIBCO-EMS:如何基于JMS消息头设置消息投递延迟

关于TIBCO EMS是否支持单条消息自定义投递延迟的解答

是的,TIBCO EMS完全支持通过消息头属性为单条消息设置差异化的投递延迟,实现效果和ActiveMQ的AMQ_SCHEDULED_DELAY特性一致。

实现方式

TIBCO EMS提供了标准的JMS自定义消息属性JMS_TIBCO_DELIVERY_DELAY,参数值为long类型,单位为毫秒,用于指定消息发送到EMS服务端后,需要延迟多久才投递给消费者。

代码示例

对应你给出的ActiveMQ实现逻辑,TIBCO EMS的实现代码如下:

MessageProducer producer = session.createProducer(destination);
TextMessage message = session.createTextMessage("test msg");

if (condition) {
    // 延迟60秒投递,单位为毫秒
    long delayTime = 60 * 1000;
    message.setLongProperty("JMS_TIBCO_DELIVERY_DELAY", delayTime);
}
producer.send(message);

注意事项

  • 该特性仅在TIBCO EMS 8.4及以上版本支持,低版本EMS如需实现类似效果,需要通过「消息过期 + 死信队列转发」的迂回方案实现
  • 延迟计时从EMS服务端收到消息的时间开始计算,而非生产者构造消息的时间
  • 单条消息设置的JMS_TIBCO_DELIVERY_DELAY优先级高于队列/主题层面配置的统一投递延迟参数
  • 延迟未到期的消息会暂存在EMS服务端存储中,不会被消费者提前拉取到

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:00:03