Я настраиваю простое Испытание концепции, чтобы изучить некоторые концепции в Google Cloud, в частности PubSub и Dataflow.
У меня есть тема PubSub greeting
I 'Мы создали простую облачную функцию, которая отправляет публикует сообщение в эту тему:
const escapeHtml = require('escape-html');
const { Buffer } = require('safe-buffer');
const { PubSub } = require('@google-cloud/pubsub');
exports.publishGreetingHTTP = async (req, res) => {
let name = 'no name provided';
if (req.query && req.query.name) {
name = escapeHtml(req.query.name);
} else if (req.body && req.body.name) {
name = escapeHtml(req.body.name);
}
const pubsub = new PubSub();
const topicName = 'greeting';
const data = JSON.stringify({ hello: name });
const dataBuffer = Buffer.from(data);
const messageId = await pubsub.topic(topicName).publish(dataBuffer);
res.send(`Message ${messageId} published. name=${name}`);
};
Я установил другую облачную функцию, которая запускается по теме:
const { Buffer } = require('safe-buffer');
exports.subscribeGreetingPubSub = (data) => {
const pubSubMessage = data;
const passedData = pubSubMessage.data ? JSON.parse(Buffer.from(pubSubMessage.data, 'base64').toString()) : { error: 'no data' };
console.log(passedData);
};
Это прекрасно работаети я вижу, что он зарегистрирован как подписка на тему.
Теперь я хочу отправить использование Dataflow для отправки данных в BigQuery
Похоже, 2 шаблонадля этого:
Я не понимаю разницы между темой и подпиской в этом контексте.
https://medium.com/google-cloud/new-updates-to-pub-sub-to-bigquery-templates-7844444e6068 проливает немного света:
Обратите внимание, чтоИспользование подписок по темам заключается в том, что подписки читаются только один раз, покаCS можно прочитать несколько раз.Поэтому шаблон подписки не может поддерживать несколько одновременных конвейеров, читающих одну и ту же подписку.
Но я должен сказать, что все еще потерян, чтобы понять реальные последствия этого.