Возникла исключительная ситуация ValueEvent на прерывателе - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь подключить брокер обмена сообщениями WSO2 в качестве сервера MQTT к серверу идентификации WSO2 с OAUTH2.Я пишу на 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

, в журнале посредников появляется следующее исключение:

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 в сценарии отправителя.

Я видел, что несколько сообщений избежали ошибки, но большинство из них отбрасываются сервером.

Чего мне не хватает?

...