ActiveMQ 中可以通过以下方式设置消息的过期时间:
- 在发送消息时直接设置 JMSExpiration 属性:
TextMessage message = session.createTextMessage("Hello");
message.setJMSExpiration(3600000); // 1小时过期
producer.send(message);
- 在消息生产者上设置默认过期时间:
MessageProducer producer = session.createProducer(queue);
producer.setTimeToLive(3600000); // 1小时过期
producer.send(message);
- 基于发送目的地设置默认过期时间:在 Broker 配置文件中设定。
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic="Expire.>">
<defaultEntry>
<expiryOverride>3600000</expiryOverride> <!-- 1小时过期 -->
</defaultEntry>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
- 基于消息发送者设置默认过期时间:也是在 Broker 配置文件中设定。
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">">
<producerEntry>
<producerId>PRODUCER1</producerId>
<defaultEntry>
<expiryOverride>3600000</expiryOverride> <!-- PRODUCER1 发送的消息1小时过期 -->
</defaultEntry>
</producerEntry>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>