如何使客户使用自己的凭据动态认证mqtt经纪人

时间:2018-10-25 09:10:18

标签: spring-integration mqtt iot

这是通过mqtt-spring集成对mqtt代理进行身份验证的代码,

public DefaultMqttPahoClientFactory clientfactory() {

    DefaultMqttPahoClientFactory factory = new DefaultMqttPahoClientFactory();
    MqttConnectOptions options = new MqttConnectOptions();
    options.setUserName("username");
    options.setPassword("password".toCharArray());
    options.setServerURIs(new String[] { "tcp://localhost:1883" });
    factory.setConnectionOptions(options);

    return factory;
}

@Bean
@ServiceActivator(inputChannel = "mqttOutboundChannel")
public MqttPahoMessageHandler mqqtMessageHandler() {

    MqttPahoMessageHandler handler = new MqttPahoMessageHandler("clientId", clientfactory());
    handler.setAsync(true);
    handler.setDefaultQos(2);
    handler.setDefaultRetained(true);
    return handler;
} 

假设我正在使用许多客户端将数据发布到他们自己的主题集,并且我应该为每个客户端分配唯一的身份验证凭据以建立mqtt代理连接。我认为上面的代码甚至只允许一组凭据如果我们使用很多客户。是否可以动态化?

1 个答案:

答案 0 :(得分:0)

您需要用自己的DefaultMqttPahoClientFactory实现来替换MqttPahoClientFactory;也许是DefaultMqttPahoClientFactory的子类。