有人可以指导我如何拦截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
答案 0 :(得分:0)
I filled a feature request用于MQTT中的拦截器支持。它已经实施并在Artemis 1.4.0中发布。
在Artemis 1.3.0中,只能拦截通过核心协议发送的消息(可能还有一个除MQTT以外的消息)。