我试图在activeMQ 5.8.0下使用JMS实现一个新的应用程序。 有几个应用程序configuration为生产者(即在MQ中转储消息),两个主题,然后消费者被configuration为查看在Tomcat服务器启动时dynamic创build的VirtualTopic。
示例stream程将是:
Producer1 (Tomcat) --JMS--> ActiveMQ.VirtualTopic Consumer.VirtualTopic1 --JMS--> Consumer1 (Tomcat) Consumer.VirtualTopic2 --JMS--> Consumer2 (Tomcat)
我们希望灵活性能够启动任何数量的消费者,并将ActiveMQdynamic地发送给他们。 这是工作。 但是,当消费者服务器被closures时(或者不再需要,服务器崩溃,networking中断等),我希望AMQ停止在VirtualTopic上放置消息,因为stream量控制正在踢入,不再是从生产者消耗的消息。
我有我的activemq.xmlconfiguration与:
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}" schedulePeriodForDestinationPurge="10000"> <policyEntry queue=">" gcInactiveDestinations="true" inactiveTimoutBeforeGC="30000" />
因此,我希望服务器在Tomcat节点停止40秒(标记为零的消费者数量)内被标记为非活动状态,但不会发生。 我错过了什么吗?
谢谢!
我自己find了一个更ActiveMQ熟悉的答案。 队列会自动删除,但前提是没有待处理的消息。 这个解决scheme的实现是为了处理一个持续不断的消息stream(每秒20-5000个),所以从来没有一个窗口可以被删除。