Push / Sub push-сообщение, не имеющее свойства messageId - PullRequest
0 голосов
/ 04 октября 2019

Это может заслуживать проблемы с облачной службой Pub / Sub. Но пока поддержка GCP не очень полезна, поэтому я публикую эту проблему здесь.

В соответствии с здесь , сообщение Pubsub должно иметь свойство messageId, независимо от того, идет оно от pull или push.

Итак, я пытаюсь увидеть, как выглядит сообщение: (событие здесь - это сообщение pubsub, отправленное в облачную функцию)

exports.my_cloud_function = (event) => {
    logger.debug(`Event: ${util.inspect(event)}`);
}

Что я ожидал:

{ '@type': 'type.googleapis.com/google.pubsub.v1.PubsubMessage', messageId:'111111111', publishTime: 'Oct 1st 2019, xxxx', attributes: { key1: 'value1', key2: 'value2' }, data: 'eLCJ=(some base 64)' }

Что на самом деле:

{ '@type': 'type.googleapis.com/google.pubsub.v1.PubsubMessage', attributes: { key1: 'value1', key2: 'value2' }, data: 'eLCJ=(some base 64)' }

1 Ответ

2 голосов
/ 05 октября 2019

Если я угадаю, вы используете облачную функцию с триггером событий. И это обычная ловушка (я чувствовал себя в ней несколько раз ...).

Так что в формате события ОпубликованныйВремя и идентификатор сообщения находятся в объекте context, а не в событии, как описано here

В вашей функции добавьте контекст в param и напечатайте его. Это должно работать.

exports.my_cloud_function = (event,context) => {
    logger.debug(`Event: ${util.inspect(event)}`);
    logger.debug(`Context: ${util.inspect(context)}`);
}
...