是否可以从 pubsub 触发云事件。
import { cloudEvent } from "@google-cloud/functions-framework"
export const myCloudEvent = cloudEvent<GoogleDrivePageMessage>("myTopic", cloudEvent => {
const data = cloudEvent.data;
logger.log("Called pub sub")
});
并通过调用publishMessage来触发它
const pubsub = new PubSub(config);
const topic = pubsub.topic("myTopic");
topic.publishMessage({ data: Buffer.from(messageJson) }, (error, messageId) => {
if (error) {
logger.log(`There was an error trying to send pubsub message: ${messageId}`, error)
}
});
我也尝试在本地测试这个,但模拟器似乎甚至没有加载 cloudEvent 函数。我如何在不先部署的情况下在本地测试它。
PubSub 本身不支持 CloudEvent 格式(很接近但不相似)。当您从 pubSub 读取数据时,库会将 PubSub 格式转换为 Cloud Event 格式。
但是,要发布消息,您必须以 PubSub 格式发布它们(属性和负载,而不是标头和正文)