Fehlerbehebung, wenn keine Verbindung zum MQTT-Client hergestellt werden kann
Wenn Ihr MQTT-Client keine Verbindung zu einem Telemetriekanal herstellen kann, kann dies eine Reihe von Ursachen haben.
Verfahren
Berücksichtigen Sie die folgenden möglichen Ursachen, um die Probleme mit einem MQTT-Client zu beheben, der keine Verbindung herstellen kann:
- Stellen Sie sicher, dass der Warteschlangenmanager und der Telemetrieservice (MQXR) aktiv sind.
Starten Sie den Warteschlangenmanager. Der MQXR-Service sollte standardmäßig mit dem Warteschlangenmanager gestartet werden. Wenn Sie den manuellen Start der MQXR-Serivcesteuerung konfiguriert haben, müssen Sie den Service möglicherweise aus dem Ordner Services starten. Weitere Informationen zum Starten des MQXR-Service enthält der Abschnitt MQXR-Dienst starten und stoppen.
- Stellen Sie sicher, dass der Telemetriekanal und der Telemetrieservice (MQXR) definiert sind und ordnungsgemäß ausgeführt werden.
Sie können den MQXR-Service manuell definieren und für die Standardübertragungswarteschlange des Warteschlangenmanagers den Wert
SYSTEM.MQTT.TRANSMIT.QUEUE
festlegen, wodurch sie Vorrang vor einer vorhandenen Standardübertragungswarteschlange erhält. Dadurch kann der Warteschlangenmanager in Telemetry verwendet werden. Alternativ dazu können Sie den Assistenten Musterkonfiguration definieren in der Telemetry-Begrüßungsseite ausführen, falls dies nicht bereits geschehen ist. - Haben Sie Ihren eigenen Client geschrieben?
Falls ja, haben Sie Ihre Clientanwendung mit dem Protokoll MQTT V3 und nicht mit dem Protokoll der Version 5 geschrieben? Versuchen Sie, den Fehler einzugrenzen, indem Sie das Dienstprogramm für den MQTT-Client ausführen.
- Haben Sie einen gültigen Namen für die Clientkennung?
Beim Herstellen einer Verbindung zu IBM® MQsollte die MQTT-Client-ID kürzer als 23 Zeichen sein und nur alphabetische Zeichen, numerische Zeichen sowie Punkt (.), Schrägstrich (/), Unterstreichungszeichen (_) und Prozentzeichen (%) enthalten.
- Haben Sie Ihren MQTT-Client verbunden und das MQTT
keep alive -Intervall abgelaufen?
Beim Keepalive-Attribut handelt es sich um das Intervall in Millisekunden, nach dem die Verbindung zum MQTT-Client wegen Inaktivität getrennt wird. Wenn der MQXR-Service innerhalb des Keepalive-Intervalls keine Datenübertragung vom Client empfängt, trennt er die Verbindung zum Client.
- Versucht eine große Anzahl von MQTT-Clients gleichzeitig eine Verbindung zu einem Telemetriekanal herzustellen?
Jeder Telemetriekanal verfügt über ein Attribut vom Typ backlog. Dabei handelt es sich um eine Reihe von gleichzeitig bestehenden Verbindungsanforderungen, die der Telemetriekanal unterstützt. Stellen Sie sicher, dass für den Wert keine Zahl festgelegt ist, die kleiner als die Anzahl der MQTT-Clients ist, die eine Verbindung herstellen möchten.
- Stellen Sie sicher, dass die TCP/IP-Verbindung noch immer aktiv ist.