代码之家  ›  专栏  ›  技术社区  ›  Niels Bosma

.Net:有严重威胁的API调用

  •  2
  • Niels Bosma  · 技术社区  · 16 年前

    我们使用外部供应商的REST API发送电子邮件。我的问题是对这个API的调用可能需要0.1毫秒到12秒。我们向订阅我们通知的客户发送了数千封电子邮件,重要的是,在每一批中,第一封邮件与队列中的最后一封邮件之间没有太大的延迟(理想情况下,它们会同时发送)。

    4 回复  |  直到 16 年前
        1
  •  1
  •   Ed Power    16 年前

    你不应该在ASP中创建线程。网络应用程序。如果你有一个足够大的队列来保证多线程,你应该创建一个windows服务来处理这个队列。

        2
  •  3
  •   Spencer Ruport    16 年前

    我将在数据库表中对电子邮件进行排队,并生成一个单独的windows服务,该服务从表中读取并为每封电子邮件生成一个线程,最大线程限制为。该数据库还可用于捕获吞吐量时间。

    您还应该了解您的供应商可以同时处理多少个web服务请求。抄送电子邮件,以了解您端的同时提交是否最终成为他们端的单线程传输。也许开始寻找这个供应商的替代品(你确实说过他们很糟糕)。

    如果你想从自己的服务器上转移精力,你可以向云服务(亚马逊网络服务、微软Azure或谷歌应用服务器)发送一批电子邮件,并在云端生成一个进程,将电子邮件同时发送给你的供应商。

    你也可以直接从云端发送电子邮件,至少在亚马逊上是这样。它们提供了一个默认限制,但这里有一个关于如何删除限制的链接: http://aws.amazon.com/contact-us/ec2-email-limit-request/ .

        3
  •  1
  •   jkchong    16 年前

    ThreadPool.QueueUserWorkItem() 对于ASP。NET应用程序。你可以在谷歌上搜索一些使用示例。

        4
  •  0
  •   Wim Coenen    16 年前

    generated by visual studio 访问web服务已经包含异步方法。对于每个Web服务调用 BeginFoo EndFoo 方法。这 BeginFoo 方法将立即返回 IAsyncResult 对象,而webservice调用是在另一个线程中完成的。

    this MSDN topic 有关如何使用的更多信息 IAsyncResult .

    推荐文章