如何设置ActiveMQ以停止接受消息?

时间:2013-05-15 05:30:05

标签: java rabbitmq activemq qpid

我想知道在ActiveMQ中是否存在任何属性,用户可以限制ActiveMQ在达到某个阈值后不接受输入队列中的消息? 到目前为止,我能够使用内存约束找出其流量控制。 当输入队列达到某个阈值时,我想动态阻止我的输入队列。 还有其他软件可以帮助我实现目标吗?

1 个答案:

答案 0 :(得分:0)

可能的方法是将自定义broker interceptor插入ActiveMQ。

使用以下命令补充Spring代理配置:

<plugins>
  <bean id="myPlugin" class="org.foo.CheckThresholdPlugin"/>    
</plugins>

然后展开BrokerPlugin以覆盖发送方法。

package org.foo;

import org.apache.activemq.broker.Broker;
import org.apache.activemq.broker.BrokerPlugin;

public class CheckThresholdPlugin extends BrokerFilter { 

    public void send(ProducerBrokerExchange producer, Message message) throws Exception {     
        boolean isOverThreshold = /* figure it out by getting Destination from Message */
        if (isOverThreshold) {
          throw new Exception("The threshold is exceeded.");
        } else {
          super.send(producer, message);
        }
    }

}