Intercept mqtt client connection

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Intercept mqtt client connection

Gupta Bharat
Hello,

I want to intercept clients when trying to connect in order to do some checks before allowing them to connect.
How could I add needed features to Artemis broker interceptor? Is this possible in ActiveMQ?

I have written following code which is not working on connecting the activemq broker with MQTT client.

import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.core.protocol.mqtt.MQTTInterceptor;
import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
import org.apache.log4j.Logger;

import io.netty.handler.codec.mqtt.MqttConnectMessage;
import io.netty.handler.codec.mqtt.MqttMessage;

public class MyInterceptors implements MQTTInterceptor {

      final static Logger logger = Logger.getLogger(MyBroker.class);

      @Override
      public boolean intercept(MqttMessage arg0, RemotingConnection arg1) throws ActiveMQException {

            logger.info("MQTT Interceptor gets called--------------------------------------------------------------");


          if (arg0 instanceof MqttConnectMessage)
          {
                  logger.info("MQTT Interceptor gets called--------------------------------------------------------------");
          }
          return true;

      }

}



Regards,
Bharat Gupta
Development & Support | Platform Technician, IXCB | Scania IT
Mobile: +46700869007, +91-9718483802
[hidden email]<mailto:[hidden email]>

Reply | Threaded
Open this post in threaded view
|

Re: Intercept mqtt client connection

Justin Bertram
What you want to do is possible using an interceptor like you've
implemented.  The broker even ships with a working example demonstrating a
working MQTT interceptor.  It's called "interceptor-client-mqtt".

Your interceptor code looks fine.  Did you add it to your broker.xml?


Justin

On Thu, Dec 14, 2017 at 1:44 AM, Gupta Bharat <[hidden email]>
wrote:

> Hello,
>
> I want to intercept clients when trying to connect in order to do some
> checks before allowing them to connect.
> How could I add needed features to Artemis broker interceptor? Is this
> possible in ActiveMQ?
>
> I have written following code which is not working on connecting the
> activemq broker with MQTT client.
>
> import org.apache.activemq.artemis.api.core.ActiveMQException;
> import org.apache.activemq.artemis.core.protocol.mqtt.MQTTInterceptor;
> import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
> import org.apache.log4j.Logger;
>
> import io.netty.handler.codec.mqtt.MqttConnectMessage;
> import io.netty.handler.codec.mqtt.MqttMessage;
>
> public class MyInterceptors implements MQTTInterceptor {
>
>       final static Logger logger = Logger.getLogger(MyBroker.class);
>
>       @Override
>       public boolean intercept(MqttMessage arg0, RemotingConnection arg1)
> throws ActiveMQException {
>
>             logger.info("MQTT Interceptor gets
> called--------------------------------------------------------------");
>
>
>           if (arg0 instanceof MqttConnectMessage)
>           {
>                   logger.info("MQTT Interceptor gets
> called--------------------------------------------------------------");
>           }
>           return true;
>
>       }
>
> }
>
>
>
> Regards,
> Bharat Gupta
> Development & Support | Platform Technician, IXCB | Scania IT
> Mobile: +46700869007, +91-9718483802
> [hidden email]<mailto:[hidden email]>
>
>