如何在 HiveMQ 中正确连接身份验证?
How to properly connect with authentication in HiveMQ?
我正在尝试使用 HiveMQ 通过简单的身份验证将客户端连接到服务器。在 HiveMQ Client 上,我创建了一个客户端并使用 connectWith()
指定我想通过简单身份验证进行连接。当我输入用户名和密码时,我得到一个 MqttClientStateException
我留在下面。我是否应该在服务器上手动 store/configure 用户名和密码,因为我刚刚输入 username
和 password
就像这里的教程:
代码:
Mqtt5BlockingClient publisher = Mqtt5Client.builder()
.identifier(UUID.randomUUID().toString()) // the unique identifier of the MQTT client. The ID is randomly generated between
.serverHost("localhost") // the host name or IP address of the MQTT server. Kept it localhost for testing. localhost is default if not specified.
.serverPort(1883) // specifies the port of the server
.addConnectedListener(context -> ClientConnectionRetreiver.printConnected("Publisher1")) // prints a string that the client is connected
.addDisconnectedListener(context -> ClientConnectionRetreiver.printDisconnected("Publisher1")) // prints a string that the client is disconnected
.buildBlocking(); // creates the client builder
publisher.connectWith() // connects the client
.simpleAuth()
.username("Username")
.password("Password".getBytes())
.applySimpleAuth();
异常:
Exception in thread "SubThread1" com.hivemq.client.mqtt.exceptions.MqttClientStateException: MQTT client is not connected.
at com.hivemq.client.internal.mqtt.MqttBlockingClient.subscribe(MqttBlockingClient.java:101)
at com.hivemq.client.internal.mqtt.message.subscribe.MqttSubscribeBuilder$Send.send(MqttSubscribeBuilder.java:184)
at com.main.SubThread.run(SubThread.java:83)
at java.base/java.lang.Thread.run(Thread.java:834)
您忘记发送连接消息
publisher.connectWith()
.simpleAuth()
.username("Username")
.password("Password".getBytes())
.applySimpleAuth()
.send();
如果你真的想验证客户端,你必须配置服务器。使用 HiveMQ,您可以使用基于文件角色的访问控制扩展 (https://www.hivemq.com/extension/file-rbac-extension/) 进行简单的身份验证。
我正在尝试使用 HiveMQ 通过简单的身份验证将客户端连接到服务器。在 HiveMQ Client 上,我创建了一个客户端并使用 connectWith()
指定我想通过简单身份验证进行连接。当我输入用户名和密码时,我得到一个 MqttClientStateException
我留在下面。我是否应该在服务器上手动 store/configure 用户名和密码,因为我刚刚输入 username
和 password
就像这里的教程:
代码:
Mqtt5BlockingClient publisher = Mqtt5Client.builder()
.identifier(UUID.randomUUID().toString()) // the unique identifier of the MQTT client. The ID is randomly generated between
.serverHost("localhost") // the host name or IP address of the MQTT server. Kept it localhost for testing. localhost is default if not specified.
.serverPort(1883) // specifies the port of the server
.addConnectedListener(context -> ClientConnectionRetreiver.printConnected("Publisher1")) // prints a string that the client is connected
.addDisconnectedListener(context -> ClientConnectionRetreiver.printDisconnected("Publisher1")) // prints a string that the client is disconnected
.buildBlocking(); // creates the client builder
publisher.connectWith() // connects the client
.simpleAuth()
.username("Username")
.password("Password".getBytes())
.applySimpleAuth();
异常:
Exception in thread "SubThread1" com.hivemq.client.mqtt.exceptions.MqttClientStateException: MQTT client is not connected.
at com.hivemq.client.internal.mqtt.MqttBlockingClient.subscribe(MqttBlockingClient.java:101)
at com.hivemq.client.internal.mqtt.message.subscribe.MqttSubscribeBuilder$Send.send(MqttSubscribeBuilder.java:184)
at com.main.SubThread.run(SubThread.java:83)
at java.base/java.lang.Thread.run(Thread.java:834)
您忘记发送连接消息
publisher.connectWith()
.simpleAuth()
.username("Username")
.password("Password".getBytes())
.applySimpleAuth()
.send();
如果你真的想验证客户端,你必须配置服务器。使用 HiveMQ,您可以使用基于文件角色的访问控制扩展 (https://www.hivemq.com/extension/file-rbac-extension/) 进行简单的身份验证。