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