O modelo MQTT para Pub/Sub é um pipeline de streaming que lê mensagens de um tópico MQTT e as escreve no Pub/Sub.
Inclui os parâmetros opcionais username
e password
caso a autenticação seja exigida pelo servidor MQTT.
Se o pipeline não receber nenhuma mensagem do tópico MQTT durante mais de 90 minutos, ocorre um StackOverflowError
.
Como solução alternativa, pode alterar o número de trabalhadores a cada 90 minutos.
Para mais informações sobre como alterar o número de trabalhadores sem parar a tarefa,
consulte Atualização da opção de tarefa em curso.
Requisitos da pipeline
- O nome do tópico de saída do Pub/Sub tem de existir.
- O IP do anfitrião MQTT tem de existir e ter a configuração de rede adequada para que as máquinas de trabalho alcancem o anfitrião MQTT.
- O tópico MQTT do qual os dados são extraídos tem de ter um nome.
Parâmetros de modelos
Parâmetros obrigatórios
- inputTopic: o nome do tópico MQTT a partir do qual os dados são lidos. Por exemplo,
topic
. - outputTopic: o nome do tópico Pub/Sub de saída no qual os dados são escritos. Por exemplo,
projects/your-project-id/topics/your-topic-name
. - username: o nome de utilizador a usar para a autenticação no servidor MQTT. Por exemplo,
sampleusername
. - password: a palavra-passe associada ao nome de utilizador facultado. Por exemplo,
samplepassword
.
Parâmetros opcionais
- brokerServer: o endereço IP ou o anfitrião do servidor do agente MQTT. Por exemplo,
tcp://host:1883
.
Execute o modelo
Consola
- Aceda à página do fluxo de dados Criar tarefa a partir de um modelo. Aceda a Criar tarefa a partir de modelo
- No campo Nome da tarefa, introduza um nome exclusivo para a tarefa.
- Opcional: para Ponto final regional, selecione um valor no menu pendente. A região
predefinida é
us-central1
.Para ver uma lista das regiões onde pode executar uma tarefa do Dataflow, consulte as localizações do Dataflow.
- No menu pendente Modelo do fluxo de dados, selecione MQTT to Pub/Sub template.
- Nos campos de parâmetros fornecidos, introduza os valores dos parâmetros.
- Clique em Executar tarefa.
gcloud
Na shell ou no terminal, execute o modelo:
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
Tem de substituir os seguintes valores neste exemplo:
- Substitua YOUR_PROJECT_ID pelo ID do seu projeto.
- Substitua pelo nome da região do Dataflow. Por exemplo:
us-central1
. - Substitua JOB_NAME por um nome de trabalho à sua escolha. O nome da tarefa tem de corresponder à expressão regular
[a-z]([-a-z0-9]{0,38}[a-z0-9])?
para ser válido. - Substitua INPUT_TOPIC pelo nome do tópico de entrada do servidor MQTT. Por exemplo:
testtopic
. - Substitua MQTT_SERVER pelos endereços do servidor MQTT. Por exemplo:
tcp://10.128.0.62:1883
- Substitua OUTPUT_TOPIC pelo nome do tópico de saída do Pub/Sub. Por exemplo:
projects/myproject/topics/testoutput
. - Substitua USERNAME pelo nome de utilizador do servidor MQTT. Por exemplo:
testuser
. - Substitua PASSWORD pela palavra-passe que corresponde ao nome de utilizador usado com o servidor MQTT.
API
Para executar o modelo através da API REST, envie um pedido HTTP POST. Para mais informações sobre a API e os respetivos âmbitos de autorização, consulte 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", } }
Tem de substituir os seguintes valores neste exemplo:
- Substitua YOUR_PROJECT_ID pelo ID do seu projeto.
- Substitua pelo nome da região do Dataflow. Por exemplo:
us-central1
. - Substitua JOB_NAME por um nome de trabalho à sua escolha. O nome da tarefa tem de corresponder à expressão regular
[a-z]([-a-z0-9]{0,38}[a-z0-9])?
para ser válido. - Substitua INPUT_TOPIC pelo nome do tópico de entrada do servidor MQTT. Por exemplo:
testtopic
. - Substitua MQTT_SERVER pelos endereços do servidor MQTT. Por exemplo:
tcp://10.128.0.62:1883
- Substitua OUTPUT_TOPIC pelo nome do tópico de saída do Pub/Sub. Por exemplo:
projects/myproject/topics/testoutput
. - Substitua USERNAME pelo nome de utilizador do servidor MQTT. Por exemplo:
testuser
. - Substitua PASSWORD pela palavra-passe que corresponde ao nome de utilizador usado com o servidor MQTT.
O que se segue?
- Saiba mais sobre os modelos do Dataflow.
- Consulte a lista de modelos fornecidos pela Google.