我正在尝试将作为MQTT服务器的WSO2消息代理与OAUTH2连接到WSO2身份服务器。我在Python上编码。我已经成功创建了一个订阅者,可以正确读取收到的消息。从IS服务器获取访问令牌后,它将连接到代理并正确读取发送的内容。
client = mqtt.Client()
client.username_pw_set(username=access_token,password="")
client.connect(broker_address, port=broker_port)
client.on_connect = on_connect
client.on_message = on_message
当我尝试发送消息时,我使用了相同的连接代码来获取Oauth访问令牌。当我使用此代码
client = mqtt.Client()
client.username_pw_set(username=access_token,password="")
client.connect(broker_address, port=broker_port)
client.on_connect = on_connect
client.on_message = on_message
我在Broker日志中收到以下异常:
TID: [] [] [2018-10-01 11:49:46,237] INFO {org.dna.mqtt.moquette.messaging.spi.impl.ProtocolProcessor} - cleaning old saved subscriptions for client dev7 {org.dna.mqtt.moquette.messaging.spi.impl.ProtocolProcessor}
TID: [] [] [2018-10-01 11:49:46,237] ERROR {org.dna.mqtt.wso2.MqttLogExceptionHandler} - ValueEvent exception occurred on disruptor. {org.dna.mqtt.wso2.MqttLogExceptionHandler}
java.lang.NullPointerException
at org.wso2.andes.mqtt.connectors.PersistenceStoreConnector.addMessage(PersistenceStoreConnector.java:110)
at org.wso2.andes.mqtt.MQTTopicManager.addTopicMessage(MQTTopicManager.java:131)
at org.dna.mqtt.wso2.AndesMQTTBridge.onMessagePublished(AndesMQTTBridge.java:146)
at org.dna.mqtt.moquette.messaging.spi.impl.ProtocolProcessor.processPublish(ProtocolProcessor.java:417)
at org.dna.mqtt.moquette.messaging.spi.impl.SimpleMessaging.onEvent(SimpleMessaging.java:171)
at org.dna.mqtt.moquette.messaging.spi.impl.SimpleMessaging.onEvent(SimpleMessaging.java:47)
at com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:128)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
TID: [] [] [2018-10-01 11:49:46,238] INFO {org.dna.mqtt.moquette.messaging.spi.impl.ProtocolProcessor} - cleaning old saved subscriptions for client dev7 {org.dna.mqtt.moquette.messaging.spi.impl.ProtocolProcessor}
TID: [] [] [2018-10-01 11:49:46,238] INFO {org.wso2.andes.mqtt.MQTTopicManager} - Disconnecting channel for clientID: dev7 {org.wso2.andes.mqtt.MQTTopicManager}
TID: [] [] [2018-10-01 11:49:46,238] INFO {org.dna.mqtt.moquette.messaging.spi.impl.ProtocolProcessor} - Disconnected client dev7 with clean session true {org.dna.mqtt.moquette.messaging.spi.impl.ProtocolProcessor}
避免此错误的方法是在发送方脚本上注释username_pw_set命令。
我已经看到一些消息避免了该错误,但是大多数消息已被服务器丢弃。
我想念什么?