Modèle MQTT vers Pub/Sub

Le modèle MQTT vers Pub/Sub est un pipeline de streaming qui lit les messages d'un sujet MQTT et les écrit dans Pub/Sub. Il inclut les paramètres facultatifs username et password au cas où l'authentification serait requise par le serveur MQTT.

Si le pipeline ne reçoit aucun message du sujet MQTT pendant plus de 90 minutes, une erreur StackOverflowError se produit. Pour contourner ce problème, vous pouvez modifier le nombre de nœuds de calcul toutes les 90 minutes. Pour en savoir plus sur la modification du nombre de nœuds de calcul sans arrêter votre job, consultez la section Mise à jour des options de job en cours.

Conditions requises pour ce pipeline

  • Le nom du sujet de sortie Pub/Sub doit déjà exister.
  • L'adresse IP de l'hôte MQTT doit exister et présenter la configuration réseau appropriée pour que les machines de nœud de calcul puissent atteindre l'hôte MQTT.
  • Le sujet MQTT à partir duquel les données sont extraites doit avoir un nom.

Paramètres de modèle

Paramètres Description
brokerServer Adresse IP ou hôte du serveur de courtage MQTT. Par exemple, tcp://10.0.0.1:1883.
inputTopic Nom du sujet MQTT à partir duquel les données sont lues.
outputTopic Nom du sujet Pub/Sub de sortie dans lequel les données sont écrites.
username (Facultatif) Nom d'utilisateur pour l'authentification sur le serveur MQTT.
password (Facultatif) Mot de passe associé au nom d'utilisateur fourni.

Exécuter le modèle

Console

  1. Accédez à la page Dataflow Créer un job à partir d'un modèle.
  2. Accéder à la page Créer un job à partir d'un modèle
  3. Dans le champ Nom du job, saisissez un nom de job unique.
  4. Facultatif : pour Point de terminaison régional, sélectionnez une valeur dans le menu déroulant. La région par défaut est us-central1.

    Pour obtenir la liste des régions dans lesquelles vous pouvez exécuter un job Dataflow, consultez la page Emplacements Dataflow.

  5. Dans le menu déroulant Modèle Dataflow, sélectionnez MQTT to Pub/Sub template.
  6. Dans les champs fournis, saisissez vos valeurs de paramètres.
  7. Cliquez sur Run Job (Exécuter la tâche).

gcloud

Dans le shell ou le terminal, exécutez le modèle :

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
  

Vous devez remplacer les valeurs suivantes dans l'exemple ci-dessous :

  • Remplacez YOUR_PROJECT_ID par l'ID du projet.
  • Remplacez par le nom de la région Dataflow. Exemple : us-central1.
  • Remplacez JOB_NAME par le nom de tâche de votre choix. Le nom de tâche doit correspondre à l'expression régulière [a-z]([-a-z0-9]{0,38}[a-z0-9])? pour être valide.
  • Remplacez INPUT_TOPIC par le nom du sujet d'entrée sur le serveur MQTT. Exemple : testtopic.
  • Remplacez MQTT_SERVER par les adresses du serveur MQTT. Par exemple : tcp://10.128.0.62:1883
  • Remplacez OUTPUT_TOPIC par le nom du sujet de sortie Pub/Sub. Exemple : projects/myproject/topics/testoutput.
  • Remplacez USERNAME par le nom d'utilisateur pour le serveur MQTT. Exemple : testuser.
  • Remplacez PASSWORD par le mot de passe correspondant au nom d'utilisateur associé au serveur MQTT.

API

Pour exécuter le modèle à l'aide de l'API REST, envoyez une requête HTTP POST. Pour en savoir plus sur l'API et ses champs d'application d'autorisation, consultez la section 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",
   }
}
  

Vous devez remplacer les valeurs suivantes dans l'exemple ci-dessous :

  • Remplacez YOUR_PROJECT_ID par l'ID du projet.
  • Remplacez par le nom de la région Dataflow. Exemple : us-central1.
  • Remplacez JOB_NAME par le nom de tâche de votre choix. Le nom de tâche doit correspondre à l'expression régulière [a-z]([-a-z0-9]{0,38}[a-z0-9])? pour être valide.
  • Remplacez INPUT_TOPIC par le nom du sujet d'entrée sur le serveur MQTT. Exemple : testtopic.
  • Remplacez MQTT_SERVER par les adresses du serveur MQTT. Par exemple : tcp://10.128.0.62:1883
  • Remplacez OUTPUT_TOPIC par le nom du sujet de sortie Pub/Sub. Exemple : projects/myproject/topics/testoutput.
  • Remplacez USERNAME par le nom d'utilisateur pour le serveur MQTT. Exemple : testuser.
  • Remplacez PASSWORD par le mot de passe correspondant au nom d'utilisateur associé au serveur MQTT.

Étapes suivantes