Modelo de JMS para Pub/Sub

O modelo de JMS para Pub/Sub é um pipeline de streaming que lê as mensagens do servidor JMS do ActiveMQ (fila/tópico) e as grava no Pub/Sub.

Requisitos do pipeline

  • O nome do tópico de saída do Pub/Sub precisa existir.
  • O IP de host do JMS precisa existir e ter a configuração de rede adequada a fim de que as VMs de worker do Dataflow acessem o host do JMS.
  • O tópico/fila do JMS do qual os dados são extraídos precisa ter um nome.

Parâmetros do modelo

Parâmetros obrigatórios

  • inputName : o nome do tópico ou da fila do JMS em que os dados são lidos. (Exemplo: queue).
  • inputType : o tipo de destino do JMS em que os dados serão lidos. Pode ser uma fila ou um tópico. (Exemplo: queue).
  • outputTopic : o nome do tópico do Pub/Sub em que os dados serão publicados, no formato projects/<PROJECT_ID>/topics/<TOPIC_NAME>. (Exemplo: projects/your-project-id/topics/your-topic-name).
  • username : o nome de usuário a ser usado na autenticação no servidor JMS. (Exemplo: sampleusername).
  • password : a senha associada ao nome de usuário fornecido. (Exemplo: samplepassword).

Parâmetros opcionais

  • jmsServer : o IP do servidor JMS (ActiveMQ). (Exemplo: tcp://10.0.0.1:61616).

Executar o modelo

Console

  1. Acesse a página Criar job usando um modelo do Dataflow.
  2. Acesse Criar job usando um modelo
  3. No campo Nome do job, insira um nome exclusivo.
  4. Opcional: em Endpoint regional, selecione um valor no menu suspenso. A região padrão é us-central1.

    Para ver uma lista de regiões em que é possível executar um job do Dataflow, consulte Locais do Dataflow.

  5. No menu suspenso Modelo do Dataflow, selecione JMS to Pub/Sub template.
  6. Nos campos de parâmetro fornecidos, insira os valores de parâmetro.
  7. Cliquem em Executar job.

gcloud

No 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/JMS_to_Cloud_PubSub \
    --parameters \
jmsServer=JMS_SERVER,\
inputName=INPUT_NAME,\
inputType=INPUT_TYPE,\
outputTopic=OUTPUT_TOPIC,\
username=USERNAME,\
password=PASSWORD
  

Substitua os valores a seguir neste exemplo:

  • Substitua YOUR_PROJECT_ID pelo ID do projeto.
  • Substitua pelo nome da região do Dataflow. Por exemplo, us-central1.
  • Substitua JOB_NAME por um nome de job de sua escolha. O nome do job precisa corresponder à expressão regular [a-z]([-a-z0-9]{0,38}[a-z0-9])? para ser válido.
  • Substitua JMS_SERVER pelos endereços do servidor JMS. Por exemplo: tcp://10.0.0.0:61616
  • Substitua INPUT_NAME pelo nome do tópico/fila de entrada do servidor JMS. Por exemplo, testtopic.
  • Substitua INPUT_TYPE pelo tipo de destino do servidor JMS (fila/tópico). Por exemplo: topic
  • 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 usuário do servidor JMS. Por exemplo, testuser.
  • Substitua PASSWORD pela senha correspondente ao nome de usuário usado no servidor JMS.

API

Para executar o modelo usando a API REST, envie uma solicitação HTTP POST. Para mais informações sobre a API e os respectivos escopos 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": {
          "jmsServer": "JMS_SERVER",
          "inputName": "INPUT_NAME",
          "inputType": "INPUT_TYPE",
          "outputTopic": "OUTPUT_TOPIC",
          "username": "USERNAME",
          "password": "PASSWORD"
      },
      "containerSpecGcsPath": "gs://dataflow-templates-REGION_NAME/VERSION/flex/JMS_to_Cloud_PubSub",
   }
}
  

Substitua os valores a seguir neste exemplo:

  • Substitua YOUR_PROJECT_ID pelo ID do projeto.
  • Substitua pelo nome da região do Dataflow. Por exemplo, us-central1.
  • Substitua JOB_NAME por um nome de job de sua escolha. O nome do job precisa corresponder à expressão regular [a-z]([-a-z0-9]{0,38}[a-z0-9])? para ser válido.
  • Substitua JMS_SERVER pelos endereços do servidor JMS. Por exemplo: tcp://10.0.0.0:61616
  • Substitua INPUT_NAME pelo nome do tópico/fila de entrada do servidor JMS. Por exemplo, testtopic.
  • Substitua INPUT_TYPE pelo tipo de destino do servidor JMS (fila/tópico). Por exemplo: topic
  • 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 usuário do servidor JMS. Por exemplo, testuser.
  • Substitua PASSWORD pela senha correspondente ao nome de usuário usado no servidor JMS.

A seguir