The Back Story
不久前,有人问我,我们是否可以在内部实现大规模的电子邮件解决方案,这样我们就可以更好地控制敏感信息。我提出了一个两步方案:在Excel/VBA/CDO中开发一个原型,以便于用户熟悉,然后逐步开发.Net/SQL server解决方案,以提高速度和健壮性。
什么改变了
进入第二阶段3个月后,管理层决定将电子邮件营销外包给另一家公司,这很好。第一个问题是,管理层还没有采取行动让公司通过,所以我仍然有义务使目前的原型工作。
尽管如此,原型还是有效的,至少它确实起了作用。当我们的Exchange 2003中继服务器与Exchange 2010切换时,出现了第二个问题。事实证明,默认情况下,更多的“安全”特性会被转换成节流策略,我一直在帮助sysadmin解决运行正常的服务器配置。正在发生的情况是,发送了+100封电子邮件后,服务器开始拒绝发送请求,并出现以下错误:
The message could not be sent to the SMTP server. The transport error code is 0x800ccc67.
The server response was 421 4.3.2 The maximum number of concurrent connections has exceeded a limit, closing transmission channel不幸的是,我们只有当市场部有东西要发送时,我们才能测试服务器配置,这大约是每月一次。
,下一步是什么?
我看Excel的VBA计时器功能,以帮助节流我的主循环泵,以帮助节流发送请求。这里的第三个问题是,根据我从阅读中了解到的情况,我能得到的最好的精度是计时器上的1秒。每秒1封电子邮件会比我们发送的5封电子邮件长很多(大约长4倍-5倍)。这将将3个小时的流程转换为一个超过工作人员可用时间的全天流程。我想我可以通过每一秒发送5封电子邮件来反转速率,但是如果计时器上的精度更高,则会产生更多的突发影响,而不是稳定的速率。在我看来,这会创建一个控制较少的进程,并且我不确定服务器将如何处理突发事件,而不是稳定的速率。我有什么选择?
发布于 2012-07-06 15:46:24
如果您需要更精细的计时器控制,可以使用windows睡眠API。它的单位以毫秒为单位:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Sub Testing()
'do something
Sleep(1000) 'sleep for 1 second
'continue doing something
End Sub我对Exchange不是很熟悉,所以我不能对现有的节流策略发表评论。
https://stackoverflow.com/questions/11365223
复制相似问题