- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们的应用使用 Firebase,该应用需要处理一些数据,然后在确定数据后发送一系列电子邮件。
现在,我通过 CRON(使用 pub/sub)触发单个处理程序来处理数据,然后将一系列消息发布到不同的 pub/sub 主题。该主题又具有类似的触发功能,该功能会经历几个流程,然后每次执行时发送一封电子邮件。
// Triggered by CRON task
const cronPublisher = functions.pubsub.topic('queue-emails').onPublish(async () => {
//processing
...
// Publish to other topic
await Promise.all(
emails.map((email) =>
publisher.queueSendOffer(email)
)
);
});
// Triggered by above, at times twice
const sendEmail = functions.pubsub.topic('send-email').onPublish(async () => {
//processing and send email
});
我遇到的问题是第二个主题触发器有时被执行多次,发送两封相同的电子邮件。我通过 Google 遇到的主要潜在原因只是执行时间过长,导致超时和重试。 不应该出现这种情况,因为我们的确认超时配置为 300 秒,并且执行时间永远不会超过约 12 秒。
此外,Firebase 界面似乎无法让您控制此确认的发送方式。
此 CRON 函数每天运行,问题仅每 4-5 天发生一次,但随后它会重复每封电子邮件。
有什么想法吗?
感谢。
最佳答案
如果“每条消息”都是重复的,也许是您的“cronPublisher”函数被调用了两次? Cloud Pubsub 至少提供一次语义,因此您的工作应该容忍此 https://cloud.google.com/pubsub/docs/subscriber#at-least-once-delivery .
如果您要在已收到此 cron 事件的 Firebase 事务中保留一些信息,并在发布之前进行检查,则可以防止重复发布到“send-email”主题。
关于Firebase Pub/Sub 触发器 : executing multiple times sporadically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53307957/
我有一个带有 REST API 的简单 Web 应用程序,我想通过基于 token 的身份验证来保护它。这是我的安全过滤器: public class AuthFilter extends Abstr
将carrierwave 用于我们的上传器,我们每周都会从我们的生产应用程序中收到几个Excon 错误。例如: Excon::Errors::BadRequest: Expected(200) Ac
我有一个由 CursorAdapter 驱动的 ListView。 ListView 附有 OnScrollListener: listView.setOnScrollListener(new Abs
这是我在作为管理员的职业生涯中遇到的最令人费解的 MySQL 问题。任何精通 MySQL 的人都可以帮我解决这个问题吗?: 现在,我运行一个每秒多次查询我的 MySQL/InnoDB 表的应用程序。这
您好,感谢您的阅读。我正在尝试从 People 对象数组填充基于 NSTableView 的 View 。在我的设置中,我使用带有两个 xib 文件的 Storyboard(一个用于主表格 View
我们的应用使用 Firebase,该应用需要处理一些数据,然后在确定数据后发送一系列电子邮件。 现在,我通过 CRON(使用 pub/sub)触发单个处理程序来处理数据,然后将一系列消息发布到不同的
我有一个仅使用ExecutorService.newFixedThreadPool()的应用程序,并且一切都在我们的开发机器上运行良好(主要是多核Intel,在6核AMD上也运行良好)。但是,当我们在
java.lang.NoClassDefFoundError:Resin 服务器启动时偶尔发生 这是在 Resin 3.0.21 上在 Linux 机器上使用 Java 1.5... 我在 web.x
我有以下函数来压缩字节数组: func compress(input []byte) []byte { var buf bytes.Buffer compr := gz
我已经为调用 SQL Server 的 .net 代码编写了一些测试。看来使用 System.Transactions 是回滚对数据库所做的任何修改的绝佳选择。我知道一些纯粹主义者会建议我可能想要模拟
我在尝试返回 View 时使用 MVC 4 应用程序时遇到偶发错误。 在这种特殊情况下,我将要返回一个 View return View("Home", model);,这就是我获取消息的地方。当您不
我是一名优秀的程序员,十分优秀!