Modelo de MQTT para Pub/Sub

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

  1. Aceda à página do fluxo de dados Criar tarefa a partir de um modelo.
  2. Aceda a Criar tarefa a partir de modelo
  3. No campo Nome da tarefa, introduza um nome exclusivo para a tarefa.
  4. 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.

  5. No menu pendente Modelo do fluxo de dados, selecione MQTT to Pub/Sub template.
  6. Nos campos de parâmetros fornecidos, introduza os valores dos parâmetros.
  7. 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?