La plantilla de MQTT a Pub/Sub es un flujo de procesamiento en streaming que lee mensajes de un tema de MQTT y los escribe en Pub/Sub.
Incluye los parámetros opcionales username
y password
por si el servidor MQTT requiere autenticación.
Si la canalización no recibe ningún mensaje del tema MQTT durante más de 90 minutos, se produce un StackOverflowError
.
Como solución alternativa, puedes cambiar el número de trabajadores cada 90 minutos.
Para obtener más información sobre cómo cambiar el número de trabajadores sin detener el trabajo, consulta Actualización de opciones de trabajos en curso.
Requisitos del flujo de procesamiento
- El nombre del tema de salida de Pub/Sub debe existir.
- La IP del host MQTT debe existir y tener la configuración de red adecuada para que las máquinas de trabajador puedan acceder al host MQTT.
- El tema de MQTT del que se extraen los datos debe tener un nombre.
Parámetros de plantilla
Parámetros obligatorios
- inputTopic el nombre del tema MQTT del que se leen los datos. Por ejemplo,
topic
. - outputTopic 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: nombre de usuario que se usará para la autenticación en el servidor MQTT. Por ejemplo,
sampleusername
. - password: la contraseña asociada al nombre de usuario proporcionado. Por ejemplo,
samplepassword
.
Parámetros opcionales
- brokerServer la IP o el host del servidor del broker de MQTT. Por ejemplo,
tcp://host:1883
.
Ejecutar la plantilla
Consola
- Ve a la página Crear tarea a partir de plantilla de Dataflow. Ir a Crear tarea a partir de plantilla
- En el campo Nombre de la tarea, introduce un nombre único.
- Opcional: En Endpoint regional, seleccione un valor en el menú desplegable. La región predeterminada es
us-central1
.Para ver una lista de las regiones en las que puedes ejecutar una tarea de Dataflow, consulta Ubicaciones de Dataflow.
- En el menú desplegable Plantilla de flujo de datos, seleccione MQTT to Pub/Sub template.
- En los campos de parámetros proporcionados, introduzca los valores de los parámetros.
- Haz 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
Debe sustituir los siguientes valores en este ejemplo:
- Sustituye YOUR_PROJECT_ID por el ID del proyecto.
- Sustituye por el nombre de la región de Dataflow. Por ejemplo:
us-central1
. - Sustituye JOB_NAME por el nombre de trabajo que quieras. 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. - Sustituye INPUT_TOPIC por el nombre del tema de entrada del servidor MQTT. Por ejemplo:
testtopic
. - Sustituye MQTT_SERVER por las direcciones del servidor MQTT. Por ejemplo:
tcp://10.128.0.62:1883
- Sustituye OUTPUT_TOPIC por el nombre del tema de salida de Pub/Sub. Por ejemplo:
projects/myproject/topics/testoutput
. - Sustituye USERNAME por el nombre de usuario del servidor MQTT. Por ejemplo:
testuser
. - Sustituye PASSWORD por la contraseña correspondiente al nombre de usuario utilizado con el servidor MQTT.
API
Para ejecutar la plantilla mediante la API REST, envía una solicitud HTTP POST. Para obtener más información sobre la API y sus ámbitos 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", } }
Debe sustituir los siguientes valores en este ejemplo:
- Sustituye YOUR_PROJECT_ID por el ID del proyecto.
- Sustituye por el nombre de la región de Dataflow. Por ejemplo:
us-central1
. - Sustituye JOB_NAME por el nombre de trabajo que quieras. 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. - Sustituye INPUT_TOPIC por el nombre del tema de entrada del servidor MQTT. Por ejemplo:
testtopic
. - Sustituye MQTT_SERVER por las direcciones del servidor MQTT. Por ejemplo:
tcp://10.128.0.62:1883
- Sustituye OUTPUT_TOPIC por el nombre del tema de salida de Pub/Sub. Por ejemplo:
projects/myproject/topics/testoutput
. - Sustituye USERNAME por el nombre de usuario del servidor MQTT. Por ejemplo:
testuser
. - Sustituye PASSWORD por la contraseña correspondiente al nombre de usuario utilizado con el servidor MQTT.
Siguientes pasos
- Consulta información sobre las plantillas de Dataflow.
- Consulta la lista de plantillas proporcionadas por Google.