4

バックストーリー

少し前に、機密情報をより適切に管理できるように、大量の電子メール ソリューションを社内に実装できないかと尋ねられました。私は 2 段階の計画を提案しました。ユーザーが使い慣れるように Excel/VBA/CDO でプロトタイプを開発し、次に速度と堅牢性のために .Net/SQL サーバー ソリューションを段階的に開発します。

変更点

第 2 フェーズの 3 か月後、経営陣はメール マーケティングを別の会社にアウトソーシングすることを決定しましたが、これは問題ありません。1つ目の問題は、経営陣が会社を通過させる動きをしていないため、現在のプロトタイプを機能させる暗黙の義務を負っていることです。

それでも、プロトタイプは機能するか、少なくとも機能しました。2 番目の問題は、Exchange 2003 リレー サーバーが Exchange 2010 に切り替えられたときに発生しました。スロットル ポリシーのように、より多くの「安全」機能が既定で有効になっていることが判明しました。+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

残念ながら、サーバー構成をテストできるのは、マーケティングが送信するものがある場合のみです。これは月に 1 回程度です。

次は何ですか?

Excel の VBA タイマー関数を調べて、メイン ループ ポンプを調整して送信要求を調整するのに役立てています。ここでの 3 番目の問題は、私が読んで理解していることから、私が得ることができる最高の精度はタイマーで 1 秒であるということです。1 秒あたり 1 通のメールは、これまで 1 秒あたり 5 通のメールを送信していたのに対し、かなり長くなります (約 4 倍から 5 倍)。これにより、3 時間のプロセスが、スタッフが対応可能な時間を超えて終日のプロセスに変わります。1 秒ごとに 5 通のメールを送信することでレートを逆転できると思いますが、タイマーの精度が高ければ、安定したレートではなくバーストの影響が大きくなります。私の意見では、これにより制御されていないプロセスが作成され、サーバーが安定したレートとは対照的にバーストをどのように処理するかはわかりません. 私のオプションは何ですか?

4

1 に答える 1

5

より細かいタイマー制御が必要な場合は、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 にあまり詳しくないので、調整ポリシーについてコメントすることはできません。

于 2012-07-06T15:46:24.963 に答える