我们的团队拥有一个生产级别的Meteor应用程序。在应用程序中,我们有一个发送电子邮件的特定Meteor方法。 今天,只需点击一下“提交”按钮,就会发送127封电子邮件(大约20分钟)。
我无法发布确切的代码,但基本流程非常简单:
我们确实没有太多基础来确定确切的问题并且正在研究但是怀疑它部分是由于最终用户的连接超时和Meteor重新发送请求而没有得到任何响应。
我们发现有两个与此问题相关的主题:https://groups.google.com/forum/#!topic/meteor-talk/vu5kk3t0Lr4和https://github.com/meteor/meteor/issues/1285
这两个方法都应该是幂等的。显然,直接从方法发送电子邮件并不是幂等的,因此我们建议Meteor方法应将这些电子邮件添加到队列中,并按计划对队列进行不同的服务处理。但是,我们不希望开始实施可能帮助解决问题的解决方案。
所以,这给我留下了两个问题:
感谢您的任何见解。
答案 0 :(得分:0)
我建议您发布代码,过程可能很简单,但通常会有一些小问题可以帮助确定发生了什么,即它是异步/是否存在可能阻塞的内容。
如果Meteor没有响应您的浏览器,则认为它尚未解除呼叫并重新呼叫它。至少这是我可以使用您提供的信息收集的信息。
要通过,请确保
this.unblock
(http://docs.meteor.com/#method_unblock)或使用异步JS执行您正在执行的任何操作Meteor.call
这里的一个重要线索是花了20分钟,所以它很可能是其中任何一个。
如何检查。检查浏览器中的“网络”选项卡,查看发送到服务器的内容。该方法被多次调用?是否有重新连接尝试?
要回答关于使用电子邮件队列是否有帮助的第二个问题,可能不会,这更多地取决于导致初始问题的原因。
此外:我认为SendGrid会自动对电子邮件进行排队,因此您可以立即向他们发送所有电子邮件,然后将其排队,以便根据您的限制发送。 (因为我使用它们已经有一段时间了,所以不确定)