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 o artigo Atualização da opção de tarefa em curso.

Requisitos do 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 Dataflow 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 o artigo 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?