【发布时间】:2017-08-08 08:37:51
【问题描述】:
我们正在尝试实现一个队列,其中包含有关电子邮件收件人的详细信息以及需要向他们发送电子邮件的传递时间。例如,假设您在 1 个月后的特定日期和时间在我们的应用程序上添加了提醒,我们需要在那个时候向您发送一封电子邮件,以提醒您您在我们的应用程序上发布的任何内容。
我们无法找到一种方法来告诉 Pub / Sub 在我们选择的时间运行特定任务。我们使用 App Engine,但希望将我们的电子邮件脚本隔离到一个 Google Cloud 函数,非常理想:
- 用户在我们的应用程序上保存提醒,并要求在以后通过电子邮件提醒(此请求发送到我们的 Node.js App Engine 网络服务)
- 我们的网络服务将此“任务”添加到 Pub/Sub 或您推荐的任何其他解决方案中。该任务包括用户的电子邮件地址、需要发送电子邮件的时间以及发送电子邮件时应该调用的 URL。理想情况下,该 URL 应该是我们的 Google Cloud 函数。
- 任务一直运行直到完成,如果我们的云功能在尝试发送电子邮件时报告任何问题,请重试
我们只是想不出在 GCP 上执行此操作的简单方法。我们是否应该只在 App Engine 上使用 CRON 来执行每 1 分钟运行一次并查看我们的数据库以查找电子邮件任务的任务?这种方法的问题在于 App Engine CRON 作业只能调用 App Engine 内的 URL,而不能调用我们的 Cloud Function。这样一来,我们就必须弄乱我们的 Web 服务代码,并且还要处理尝试传递电子邮件时可能出现的问题。我们怎样才能实现这种功能呢?谢谢。
【问题讨论】:
-
让定期 CRON 作业发布消息而不是发送电子邮件本身怎么样?您甚至可以将其设为单独的服务。
-
@danielx 这听起来是个好主意!大多数其他具有类似功能的 Web 应用程序是这样工作的吗?
标签: email google-app-engine google-cloud-pubsub