1

有人可以指导我如何在 ActiveMQ Artemis 代理上拦截 MQTT 消息吗?我按照手册中的建议进行了尝试,但 MQTT 消息没有被拦截。但是,消息的发布和订阅工作正常。

拦截器类:

public class InterceptorExample implements Interceptor {
      @Override
      public boolean intercept(Packet packet, RemotingConnection connection) throws ActiveMQException {
           System.out.println("Packet intercepted");
           return true;
      }
}

我在 addMQTTConnector 方法中将拦截器添加到配置中

protected void addMQTTConnector() throws Exception {        

    .
    .
    .
    List<String> incomingInterceptors = new ArrayList<>();
    incomingInterceptors.add("org.apache.activemq.artemis.core.protocol.mqtt.InterceptorExample");
    server.getConfiguration().setIncomingInterceptorClassNames(incomingInterceptors);

}

代理类的完整代码位于https://codeshare.io/snZsB

4

1 回答 1

0

我在 MQTT 中填写了拦截器支持的功能请求。它已经实现并在 Artemis 1.4.0 中发布。

在 Artemis 1.3.0 中,只有通过核心协议发送的消息(可能除了 MQTT 之外还有一个)可以被拦截。

于 2016-07-01T17:57:36.550 回答