官方参考: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。