Die Vorlage „MQTT für Pub/Sub“ ist eine Streamingpipeline, die Nachrichten aus einem MQTT-Thema liest und in Pub/Sub schreibt.
Sie enthält die optionalen Parameter username und password, falls der MQTT-Server eine Authentifizierung benötigt.
Pipelineanforderungen
- Der Name des Pub/Sub-Ausgabethemas muss vorhanden sein.
- Die MQTT-Host-IP-Adresse muss vorhanden sein und die erforderliche Netzwerkkonfiguration haben, damit Worker-Maschinen den MQTT-Host erreichen können.
- Das MQTT-Thema, aus dem Daten extrahiert werden, muss einen Namen haben.
Vorlagenparameter
Erforderliche Parameter
- inputTopic: Der Name des MQTT-Themas, aus dem Daten gelesen werden. Beispiel:
topic. - outputTopic: Der Name des Pub/Sub-Ausgabethemas, in das Daten geschrieben werden. Beispiel:
projects/your-project-id/topics/your-topic-name. - username: Der Nutzername, der für die Authentifizierung auf dem MQTT-Server verwendet werden soll. Beispiel:
sampleusername. - password: Das Passwort, das dem angegebenen Nutzernamen zugeordnet ist. Beispiel:
samplepassword.
Optionale Parameter
- brokerServer: Die IP-Adresse oder der Host des MQTT-Brokers. Beispiel:
tcp://host:1883.
Führen Sie die Vorlage aus.
Console
- Rufen Sie die Dataflow-Seite Job aus Vorlage erstellen auf. Zur Seite "Job aus Vorlage erstellen“
- Geben Sie im Feld Jobname einen eindeutigen Jobnamen ein.
- Optional: Wählen Sie für Regionaler Endpunkt einen Wert aus dem Drop-down-Menü aus. Die Standardregion ist
us-central1.Eine Liste der Regionen, in denen Sie einen Dataflow-Job ausführen können, finden Sie unter Dataflow-Standorte.
- Wählen Sie im Drop-down-Menü Dataflow-Vorlage die Vorlage „MQTT für Pub/Sub“ aus.
- Geben Sie Ihre Parameterwerte in die Parameterfelder ein.
- Klicken Sie auf Job ausführen.
gcloud
Führen Sie die Vorlage in der Shell oder im Terminal aus:
gcloud dataflow flex-template run JOB_NAME \ --project=YOUR_PROJECT_ID \ --region=REGION_NAME \ --template-file-gcs-location=gs://dataflow-templates/VERSION/flex/Mqtt_to_PubSub \ --parameters \ brokerServer=MQTT_SERVER,\ inputTopic=INPUT_TOPIC,\ outputTopic=OUTPUT_TOPIC,\ username=USERNAME,\ password=PASSWORD
In diesem Beispiel müssen Sie die folgenden Werte ersetzen:
- Ersetzen Sie YOUR_PROJECT_ID durch Ihre Projekt-ID.
- Ersetzen Sie durch den Namen der Dataflow-Region. Beispiel:
us-central1 - Ersetzen Sie JOB_NAME durch einen Jobnamen Ihrer Wahl. Der Jobname ist nur gültig, wenn er dem regulären Ausdruck
[a-z]([-a-z0-9]{0,38}[a-z0-9])?entspricht. - Ersetzen Sie INPUT_TOPIC durch den Namen des MQTT-Servereingabethemas. Beispiel:
testtopic - Ersetzen Sie MQTT_SERVER durch die MQTT-Serveradressen. Beispiel:
tcp://10.128.0.62:1883 - Ersetzen Sie OUTPUT_TOPIC durch den Namen des Pub/Sub-Ausgabethemas. Beispiel:
projects/myproject/topics/testoutput - Ersetzen Sie USERNAME durch den Nutzernamen für den MQTT-Server. Beispiel:
testuser - Ersetzen Sie PASSWORD durch das Passwort für den Nutzernamen, der mit dem MQTT-Server verwendet wird.
API
Senden Sie eine HTTP-POST-Anfrage, um die Vorlage mithilfe der REST API auszuführen. Weitere Informationen zur API und ihren Autorisierungsbereichen finden Sie unter projects.templates.launch.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch { "launch_parameter": { "jobName": "JOB_NAME", "parameters": { "brokerServer": "MQTT_SERVER", "inputTopic": "INPUT_TOPIC", "outputTopic": "OUTPUT_TOPIC", "username": "USERNAME", "password": "PASSWORD" }, "containerSpecGcsPath": "gs://dataflow-templates/VERSION/flex/Mqtt_to_PubSub", } }
In diesem Beispiel müssen Sie die folgenden Werte ersetzen:
- Ersetzen Sie YOUR_PROJECT_ID durch Ihre Projekt-ID.
- Ersetzen Sie durch den Namen der Dataflow-Region. Beispiel:
us-central1 - Ersetzen Sie JOB_NAME durch einen Jobnamen Ihrer Wahl. Der Jobname ist nur gültig, wenn er dem regulären Ausdruck
[a-z]([-a-z0-9]{0,38}[a-z0-9])?entspricht. - Ersetzen Sie INPUT_TOPIC durch den Namen des MQTT-Servereingabethemas. Beispiel:
testtopic - Ersetzen Sie MQTT_SERVER durch die MQTT-Serveradressen. Beispiel:
tcp://10.128.0.62:1883 - Ersetzen Sie OUTPUT_TOPIC durch den Namen des Pub/Sub-Ausgabethemas. Beispiel:
projects/myproject/topics/testoutput - Ersetzen Sie USERNAME durch den Nutzernamen für den MQTT-Server. Beispiel:
testuser - Ersetzen Sie PASSWORD durch das Passwort für den Nutzernamen, der mit dem MQTT-Server verwendet wird.
Bekannte Probleme
Vor Apache Beam 2.76.0 trat StackOverflowError auf, wenn die Pipeline länger als 90 Minuten keine Nachricht vom MQTT-Topic empfing. Aktualisieren Sie die Vorlage auf die neueste Version, um dieses Problem zu beheben.
Nächste Schritte
- Dataflow-Vorlagen
- Sehen Sie sich die Liste der von Google bereitgestellten Vorlagen an.