Plantilla de MQTT a Pub/Sub

La plantilla de MQTT a Pub/Sub es una canalización de transmisión que lee mensajes de un tema de MQTT y los escribe en Pub/Sub. Incluye los parámetros opcionales username y password en caso de que el servidor MQTT requiera la autenticación.

Si la canalización no recibe ningún mensaje del tema de MQTT durante más de 90 minutos, se produce un StackOverflowError. Como solución alternativa, puedes cambiar la cantidad de trabajadores cada 90 minutos. Para obtener más información acerca de cómo cambiar la cantidad de trabajadores sin detener tu trabajo, consulta Actualización de la opción de trabajo en tránsito.

Requisitos de la canalización

  • El nombre del tema de salida de Pub/Sub debe existir.
  • La IP del host de MQTT debe existir y tener la configuración de red adecuada para que las máquinas de trabajador lleguen al host de MQTT.
  • El tema MQTT del que se extraen los datos debe tener un nombre.

Parámetros de la plantilla

Parámetros obligatorios

  • inputTopic: El nombre del tema MQTT del que se leen los datos. Por ejemplo, topic
  • outputTopic: El nombre del tema de Pub/Sub de salida en el que se escriben los datos. Por ejemplo, projects/your-project-id/topics/your-topic-name
  • username: El nombre de usuario para usar en la autenticación en el servidor de MQTT. Por ejemplo, sampleusername
  • password: La contraseña asociada con el nombre de usuario proporcionado. Por ejemplo, samplepassword

Parámetros opcionales

  • brokerServer: La IP o el host del servidor del agente de MQTT. Por ejemplo, tcp://host:1883

Ejecuta la plantilla

Console

  1. Ve a la página Crear un trabajo a partir de una plantilla de Dataflow.
  2. Ir a Crear un trabajo a partir de una plantilla
  3. En el campo Nombre del trabajo, ingresa un nombre de trabajo único.
  4. Opcional: Para Extremo regional, selecciona un valor del menú desplegable. La región predeterminada es us-central1.

    Para obtener una lista de regiones en las que puedes ejecutar un trabajo de Dataflow, consulta Ubicaciones de Dataflow.

  5. En el menú desplegable Plantilla de Dataflow, selecciona MQTT to Pub/Sub template.
  6. En los campos de parámetros proporcionados, ingresa los valores de tus parámetros.
  7. Haga clic en Ejecutar trabajo.

gcloud

En tu shell o terminal, ejecuta la plantilla:

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
  

En este ejemplo, debes reemplazar los siguientes valores:

  • Reemplaza YOUR_PROJECT_ID por el ID del proyecto.
  • Reemplaza por el nombre de la región de Dataflow. Por ejemplo: us-central1
  • Reemplaza JOB_NAME por un nombre de trabajo a elección. El nombre del trabajo debe coincidir con la expresión regular [a-z]([-a-z0-9]{0,38}[a-z0-9])? para ser válido.
  • Reemplaza INPUT_TOPIC por el nombre del tema de entrada del servidor MQTT. Por ejemplo: testtopic
  • Reemplaza MQTT_SERVER por las direcciones del servidor MQTT. Por ejemplo: tcp://10.128.0.62:1883
  • Reemplaza OUTPUT_TOPIC por el nombre del tema de salida de Pub/Sub. Por ejemplo: projects/myproject/topics/testoutput
  • Reemplaza USERNAME por el nombre de usuario para el servidor MQTT. Por ejemplo: testuser
  • Reemplaza PASSWORD por la contraseña que corresponde al nombre de usuario usado con el servidor MQTT.

API

Para ejecutar la plantilla con la API de REST, envía una solicitud POST HTTP. Para obtener más información sobre la API y sus permisos de autorización, 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",
   }
}
  

En este ejemplo, debes reemplazar los siguientes valores:

  • Reemplaza YOUR_PROJECT_ID por el ID del proyecto.
  • Reemplaza por el nombre de la región de Dataflow. Por ejemplo: us-central1
  • Reemplaza JOB_NAME por un nombre de trabajo a elección. El nombre del trabajo debe coincidir con la expresión regular [a-z]([-a-z0-9]{0,38}[a-z0-9])? para ser válido.
  • Reemplaza INPUT_TOPIC por el nombre del tema de entrada del servidor MQTT. Por ejemplo: testtopic
  • Reemplaza MQTT_SERVER por las direcciones del servidor MQTT. Por ejemplo: tcp://10.128.0.62:1883
  • Reemplaza OUTPUT_TOPIC por el nombre del tema de salida de Pub/Sub. Por ejemplo: projects/myproject/topics/testoutput
  • Reemplaza USERNAME por el nombre de usuario para el servidor MQTT. Por ejemplo: testuser
  • Reemplaza PASSWORD por la contraseña que corresponde al nombre de usuario usado con el servidor MQTT.

¿Qué sigue?