Modello MQTT a Pub/Sub

Il modello da MQTT a Pub/Sub è una pipeline di inserimento flussi che legge i messaggi da un argomento MQTT e li scrive in Pub/Sub. Include i parametri facoltativi username e password nel caso in cui l'autenticazione sia richiesta dal server MQTT.

Se la pipeline non riceve alcun messaggio dall'argomento MQTT per più di 90 minuti, viene generato un StackOverflowError. Come soluzione alternativa, puoi modificare il numero di worker ogni 90 minuti. Per saperne di più su come modificare il numero di worker senza interrompere il job, consulta Aggiornamento delle opzioni di job in esecuzione.

Requisiti della pipeline

  • Il nome dell'argomento di output Pub/Sub deve esistere.
  • L'IP host MQTT deve esistere e avere la configurazione di rete adeguata affinché le macchine worker possano raggiungere l'host MQTT.
  • L'argomento MQTT da cui vengono estratti i dati deve avere un nome.

Parametri del modello

Parametri obbligatori

  • inputTopic: il nome dell'argomento MQTT da cui vengono letti i dati. (ad es. argomento).
  • outputTopic: il nome dell'argomento Pub/Sub di output in cui vengono scritti i dati. ad esempio projects/your-project-id/topics/your-topic-name.
  • nomeutente : il nome utente da utilizzare per l'autenticazione sul server MQTT. (Esempio: sampleusername).
  • password: la password associata al nome utente fornito. Esempio: password di esempio.

Parametri facoltativi

  • brokerServer : l'IP o l'host del server del broker MQTT. ad esempio tcp://host:1883.

Esegui il modello

Console

  1. Vai alla pagina Crea job da modello di Dataflow.
  2. Vai a Crea job da modello
  3. Nel campo Nome job, inserisci un nome univoco per il job.
  4. (Facoltativo) Per Endpoint a livello di regione, seleziona un valore dal menu a discesa. Il valore predefinito è us-central1.

    Per un elenco delle regioni in cui puoi eseguire un job Dataflow, consulta Località di Dataflow.

  5. Nel menu a discesa Modello di flusso di dati, seleziona MQTT to Pub/Sub template.
  6. Inserisci i valori parametro negli appositi campi.
  7. Fai clic su Esegui job.

gcloud

Nella shell o nel terminale, esegui il modello:

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 questo esempio devi sostituire i seguenti valori:

  • Sostituisci YOUR_PROJECT_ID con l'ID progetto.
  • Sostituisci con il nome della regione Dataflow. Ad esempio: us-central1.
  • Sostituisci JOB_NAME con il nome di un job a tua scelta. Il nome del job deve corrispondere all'espressione regolare [a-z]([-a-z0-9]{0,38}[a-z0-9])? affinché sia valido.
  • Sostituisci INPUT_TOPIC con il nome dell'argomento di input del server MQTT. Ad esempio: testtopic.
  • Sostituisci MQTT_SERVER con gli indirizzi del server MQTT. Ad esempio: tcp://10.128.0.62:1883
  • Sostituisci OUTPUT_TOPIC con il nome dell'argomento di output Pub/Sub. Ad esempio: projects/myproject/topics/testoutput.
  • Sostituisci USERNAME con il nome utente del server MQTT. Ad esempio: testuser.
  • Sostituisci PASSWORD con la password corrispondente al nome utente utilizzato con il server MQTT.

API

Per eseguire il modello utilizzando l'API REST, invia una richiesta POST HTTP. Per ulteriori informazioni sull'API e sui relativi ambiti di autorizzazione, consulta 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 questo esempio devi sostituire i seguenti valori:

  • Sostituisci YOUR_PROJECT_ID con l'ID progetto.
  • Sostituisci con il nome della regione Dataflow. Ad esempio: us-central1.
  • Sostituisci JOB_NAME con il nome di un job a tua scelta. Il nome del job deve corrispondere all'espressione regolare [a-z]([-a-z0-9]{0,38}[a-z0-9])? affinché sia valido.
  • Sostituisci INPUT_TOPIC con il nome dell'argomento di input del server MQTT. Ad esempio: testtopic.
  • Sostituisci MQTT_SERVER con gli indirizzi del server MQTT. Ad esempio: tcp://10.128.0.62:1883
  • Sostituisci OUTPUT_TOPIC con il nome dell'argomento di output Pub/Sub. Ad esempio: projects/myproject/topics/testoutput.
  • Sostituisci USERNAME con il nome utente del server MQTT. Ad esempio: testuser.
  • Sostituisci PASSWORD con la password corrispondente al nome utente utilizzato con il server MQTT.

Passaggi successivi