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.

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

  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 Vorlage „MQTT für Pub/Sub“ 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/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