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 obligatoires
- inputTopic : Nom du sujet MQTT à partir duquel les données sont lues. (Exemple : sujet).
- outputTopic : Nom du sujet Pub/Sub de sortie dans lequel les données sont écrites. (par exemple, projects/votre-id-projet/topics/nom-de-votre-sujet).
- username : Nom d'utilisateur à utiliser pour l'authentification sur le serveur MQTT. (Exemple: exemplenomdutilisateur).
- password : Mot de passe associé au nom d'utilisateur fourni. (Exemple: exemplemotdepasse).
Paramètres facultatifs
- brokerServer : Adresse IP ou hôte du serveur de courtage MQTT. (par exemple, tcp://host:1883).
Exécuter le modèle
Console
- Accédez à la page Dataflow Créer un job à partir d'un modèle. Accéder à la page Créer un job à partir d'un modèle
- Dans le champ Nom du job, saisissez un nom de job unique.
- 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.
- Dans le menu déroulant Modèle Dataflow, sélectionnez MQTT to Pub/Sub template.
- Dans les champs fournis, saisissez vos valeurs de paramètres.
- 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
- Apprenez-en plus sur les modèles Dataflow.
- Consultez la liste des modèles fournis par Google.