ActiveMQ定时删除过期Topic和Queue

1 <broker xmlns="http://activemq.apache.org/schema/core" schedulePeriodForDestinationPurge="10000">
2     <destinationPolicy>
3        <policyMap>
4           <policyEntries>
5              <policyEntry queue=">" gcInactiveDestinations="true" inactiveTimoutBeforeGC="30000"/>
6           </policyEntries>
7        </policyMap>
8     </destinationPolicy>     
9   </broker>
实现定时自动清理无效的Topic和Queue需要设置三个属性。
schedulePeriodForDestinationPurge执行清理任务的周期,
gcInactiveDestinations="true"启用清理功能
 inactiveTimoutBeforeGC="30000" Topic或Queue超时时间
在规定的时间内,无有效订阅,没有入队记录,超时后就会被清理

转自:http://my.oschina.net/csen66/blog/88193
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 JMX API 获取 ActiveMQ 中所有的 TopicQueue,具体的 Java 代码如下: ```java import java.util.Set; import javax.management.MBeanServerConnection; import javax.management.ObjectName; import javax.management.remote.JMXConnector; import javax.management.remote.JMXConnectorFactory; import javax.management.remote.JMXServiceURL; import org.apache.activemq.ActiveMQConnectionFactory; public class ArtemisTopicQueueInfo { public static void main(String[] args) throws Exception { ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(); connectionFactory.setBrokerURL("tcp://localhost:61616"); connectionFactory.setUserName("admin"); connectionFactory.setPassword("admin"); JMXServiceURL jmxServiceUrl = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi"); JMXConnector jmxConnector = JMXConnectorFactory.connect(jmxServiceUrl, null); MBeanServerConnection mBeanServerConnection = jmxConnector.getMBeanServerConnection(); ObjectName brokerName = new ObjectName("org.apache.activemq.artemis:brokerName=\"localhost\",module=JMS,type=Broker"); Set<ObjectName> queueNames = mBeanServerConnection.queryNames(new ObjectName(brokerName + ",component=addresses,address=*"), null); System.out.println("Queues:"); for (ObjectName queueName : queueNames) { String queue = queueName.getKeyProperty("address").replace("_", "/"); System.out.println(queue); } Set<ObjectName> topicNames = mBeanServerConnection.queryNames(new ObjectName(brokerName + ",component=addresses,address/#"), null); System.out.println("Topics:"); for (ObjectName topicName : topicNames) { String topic = topicName.getKeyProperty("name").replace("_", "/"); System.out.println(topic); } jmxConnector.close(); } } ``` 请注意,该代码中的 ActiveMQConnectionFactory、brokerUrl 以及用户名和密码应该替换为你自己的配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值