Vorlage "MQTT für Pub/Sub"

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-Thema empfängt, tritt ein 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

Parameter Beschreibung
brokerServer Die IP-Adresse oder der Host des MQTT-Broker-Servers. Beispiel: tcp://10.0.0.1:1883.
inputTopic Der Name des MQTT-Themas, aus dem Daten gelesen werden.
outputTopic Der Name des Pub/Sub-Ausgabethemas, in das Daten geschrieben werden.
username (Optional) Der Nutzername für die Authentifizierung auf dem MQTT-Server.
password (Optional) Das Passwort, das dem angegebenen Nutzernamen zugeordnet ist.

Führen Sie die Vorlage aus.

Console

  1. Rufen Sie die Dataflow-Seite Job aus Vorlage erstellen auf.
  2. Zur Seite "Job aus Vorlage erstellen“
  3. Geben Sie im Feld Jobname einen eindeutigen Jobnamen ein.
  4. 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.

  5. Wählen Sie im Drop-down-Menü Dataflow-Vorlage die Option MQTT to Pub/Sub template aus.
  6. Geben Sie Ihre Parameterwerte in die Parameterfelder ein.
  7. 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-Ausgabe-Themas. 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-Ausgabe-Themas. 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