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.
Wenn die Pipeline länger als 90 Minuten keine Nachricht vom MQTT-Topic empfängt, tritt StackOverflowError
auf.
Als Behelfslösung können Sie die Anzahl der Worker alle 90 Minuten ändern.
Weitere Informationen zum Ändern der Anzahl der Worker, ohne den Job zu beenden, finden Sie unter Aktualisierung der Option des laufenden Jobs.
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: Beispielnutzername).
- 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 Option MQTT to Pub/Sub templateaus.
- 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-REGION_NAME/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-LOCATION/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.
Nächste Schritte
- Dataflow-Vorlagen
- Sehen Sie sich die Liste der von Google bereitgestellten Vorlagen an.