在我的 activemq 配置中,我希望为每个队列配置一个过期时间或生存时间,这样我就可以保证我的 ActiveMQ 代理中不会出现内存问题。
我配置了三种不同类型的发布:
- 直接发布到队列;
- 发布到配置为虚拟主题的主题,将消息重定向到队列; 发布到重定向
- 到队列的虚拟主题。然后,此队列被配置为 JMS 桥的入站队列,然后重定向到出站队列。
我知道生存时间是在发布者端配置的,我让它在前两种情况下工作。虽然,在第三种情况下,我似乎丢失了这个 JMS 属性,并且我没有配置过期(在桥的出站/最终队列上)。
我使用 Hawtio 查看最终队列中存在哪些属性,并确认 JMSExpiration 属性为 0,在途中丢失。基本上属性的路径和状态如下:
- 虚拟主题:已配置过期
- 网桥入站队列:已配置过期
- 网桥的出站队列:未配置过期
网桥的配置如下:
<jmsBridgeConnectors>
<jmsQueueConnector outboundQueueConnectionFactory="#localBroker" localQueueConnectionFactory="#localBroker">
<outboundQueueBridges>
<outboundQueueBridge
localQueueName = "CONSUMER.EXAMPLE.INBOUND.QUEUE"
outboundQueueName = "CONSUMER.EXAMPLE.OUTBOUND.QUEUE"/>
</outboundQueueBridges>
</jmsQueueConnector>
您知道在桥重定向之间丢失 JMS 属性是否正常吗?如果是这样,如何配置出站队列的过期时间或生存时间?
谢谢
我设法使用现有的插件解决了自己的问题,该插件基本上为每个没有到期日期的队列设置了到期日期。
配置如下所示:
<plugins>
<timeStampingBrokerPlugin zeroExpirationOverride="172800000"/>
</plugins>