官方參考:http://activemq.apache.org/interceptors.html
步驟1:實現org.apache.activemq.broker.BrokerPlugin
步驟2:繼承org.apache.activemq.broker.BrokerFilter
步驟3:activema.xml中聲明自定義的BrokerPlugin
步驟1:
public class MsgBorkerPlugin implements BrokerPlugin{
public Broker installPlugin(Broker broker) throws Exception {
return new MsgBrokerFilter(broker);
}
}
步驟2:
public class MsgBrokerFilter extends BrokerFilter{
public MsgBrokerFilter(Broker next) {
super(next);
}
@Override
public void acknowledge(ConsumerBrokerExchange consumerExchange,
MessageAck ack) throws Exception {
System.out.println("重寫改寫.............");
super.acknowledge(consumerExchange, ack);
}
@Override
public void send(ProducerBrokerExchange producerExchange,
Message messageSend) throws Exception {
System.out.println("發送Message.............");
super.send(producerExchange, messageSend);
}
}
把自定義的類做成jar放到activemq的lib中
步驟3:
創建一個bean
<bean id="msgBorkerPlugin" class="com.broker.MsgBorkerPlugin"/>
在<broker> 引用知道自定義的 BorkerPlugin
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.base}/data" persistent="true" plugins="#msgBorkerPlugin" >
</broker>
重啓的activemq,筆者測試過可以調用自定義Plugin。