2013-05-15 55 views
1

我想知道,在ActiveMQ中是否有用戶可以限制ActiveMQ在達到某個閾值後不接受輸入隊列中的消息的任何屬性? 到目前爲止,我能夠使用內存約束找出其流量控制。 我想當輸入隊列達到其特定的閾值時,動態地阻止我的輸入隊列。 有沒有其他軟件可以幫助我實現我的目標?如何設置ActiveMQ停止接受消息?

回答

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); 
     } 
    } 

} 
+0

非常感謝Knodelesser。 – madhurika