我正在使用云发布/订阅推送全天完成的事件生成的通知有效负载.我还有另一个云功能,由调度人员在一天结束时触发,用于从pub/subs拉取通知并发送邮箱通知.

我想有用户的聚合通知功能.因此,我想合并为特定用户生成的所有有效载荷,并按用户进行分组并发送通知.

我曾考虑 for each 用户单独进行订阅,然后将订阅中的所有消息作为聚合有效负载进行处理.但这似乎不是一个好的解决方案.

有没有办法根据关键字或属性合并发布/订阅消息?

推荐答案

在PubSub没有任何业务可以实现这一点.您必须执行开机自检过程.根据数据量的不同,有两种 Select

  1. 音量较低:您可以提取所有消息并将它们存储在您的云功能的内存中,对每个用户的消息进行排序,然后发送通知.将PubSub超时设置为9分钟,以便在确认消息之前有时间执行所有流程
  2. 容量太大(或者您想要一个可扩展的解决方案):将消息实时存储在数据库中,这比批量存储要好.然后执行您的查询并发送通知.最后,清除数据库.

Node.js相关问答推荐

如何将信号从终端窗口发送到运行在Raspberry Pi上的Puppeteer/Node.js上的webscraper

如何使用MongoDB在Node.js 中向数组中添加项?

(0,core_1.default)不是使用@middy/core的lambda处理程序上的函数

如何将Node.js与Nuxt.js一起使用?

请求正文未定义

在 puppeteer 中从 pdf 中删除 about:blank 和 date-time

我如何在nodejs中的路由之间交换令牌

npm install 在 Mac 上的 Node-gyp 构建错误

NodeJS 中的流 API 数据如何流动?

NodeJS 后端发布请求将数据作为NULL值发布到 SQL Server 表

AWS EC2 npm install 突然很慢

为什么在调用数据库调用时我的参数没有定义?

如何在 node.js 环境中从 WebAssembly (Rust) 调用异步 JavaScript 导入函数?

调用 require 时的 const vs let

在 Node.js 与 Cron 作业(job)中设置间隔?

如何将子集合添加到 Firestore 中的文档?

用一级 try ... catch 捕获 JavaScript Promise 中的错误

PhoneGap/Cordova Android 开发

Puppeteer 记录在 page.evaluate

node/nodemon 中是否有对 typescript 的源映射支持?