Проблема с вызовом Google Cloud Pub / Sub и фоновыми функциями - PullRequest
5 голосов
/ 09 ноября 2019

Я использую несколько облачных решений Google для проекта:

  • Движок приложений Google (Go 1.11)
  • Облачные функции Google (Go 1.11)
  • GoogleCloud Pub / Sub (Название темы: работники)

Мой проект App Engine просто о публикации сообщений в теме "работники".

Функция My Cloud должна быть запущена, когда Pub /Sub получает сообщение на тему «Работники».

После выполнения некоторых тестов с интенсивной нагрузкой я вижу, что не все мои работники вызываются.

Тест собирался выбросить пакет200 сообщений каждые 15 секунд для достижения 100 000 опубликованных сообщений (должно быть столько же вызовов функций) в конце.

Нет проблем для отправки сообщений в тему, но когда я посмотрел вИсследователь метрик Google Stackdriver (Метрики основаны на статусе выполнения облачной функции). Я вижу, что некоторые рабочие вызовы отсутствуют.

Код App Engine, публикующий сообщения:

func PublishMessage(task *models.Task) error {
    if task == nil {
       return errors.New("Empty task")
    }

    pubSubTopic := GetPubSubClient().Topic("workers")
    ctx := context.Background()

    message, err := json.Marshal(task); if err != nil {
        return err
    }

    result := pubSubTopic.Publish(ctx, &pubsub.Message{
        Data: message,
    })

    id, err := result.Get(ctx)
    if err != nil {
        return err
    }

    log.Printf("Published a message; msg ID: %v\n", id)

    return nil
}

Вот код моей облачной функции Google:

func Run(ctx context.Context, m PubSubMessage) error {

    task := &models.Task{}

    if err := json.Unmarshal(m.Data, task); err != nil {
        return err
    }

    log.Printf(*task.Name)

    return nil
}

РЕДАКТИРОВАТЬ 1:

Вот как я развертываю свою облачную функцию:

gcloud functions deploy my_worker --runtime go111 --entry-point Run --trigger-topic workers

Вот обозреватель метрик для pub / sub:

Pub/Sub Metrics

Вот обозреватель метрик для облакасчетчик вызовов функций: Cloud function metrics

...