5

ActionMailer についていくつか質問があります。

  1. Actionmailer はどのように smtp サーバーに接続しますか?

  2. 電子メールの数が 1000 を超える場合、接続は同時または並列ですか?

  3. facebook のようにメールを送信すると (数は 1000件)、即時のメールは Ruby on Rails アプリケーションにどのように影響し、actionmailer はそれをどのように処理しますか?

  4. ActionMailer とは別に、 RoRアプリケーションから多数の電子メールを送信するための他のソリューション/プラグインはありますか?

- - - - - - - - - - - - - - - - - - - - - - - - 追加した :

15 分間に少なくとも 1000 通のメールを送信する必要があります。smtp サーバーとして Notes Domino サーバーを使用しています。この種の問題の可能なアーキテクチャは何ですか。後で送信するためにメールをデータベースに保存していますが、必要なのは送信方法です。

4

4 に答える 4

8

通常は、メールを送信するためのバックグラウンド ジョブを作成します。ActionMailer は 1 通のメールには非常に適していますが、複数のメールを送信すると、送信が完了するまでに数秒かかることがあるため、問題が発生する傾向があります。そのため、これらの問題を解決するためにPostageAppを作成しました。

Rails から大量のメールを送信するのに役立ついくつかのサービスが市場に出回っています。

これらにはすべて、単一の API 呼び出しまたは SMTP トランザクションで複数のメッセージを送信する方法があります。

于 2012-04-12T14:37:38.827 に答える
4

1) Actionmailer は、ホスト、ポート、プロトコルを含む一連のパラメーターを介して smtp サーバーに接続します。

3) 多くの同期タスクが実行される結果、サイトが遅くなります。

2 & 4)

Actionmailer は、負荷がかかっている状態で大量のメールを送信するには少し遅すぎます。これは同期操作であるため、忙しいサイトで多くのことを行うようなものではないことを覚えておいてください。

正直に言うと、Web サイトからその量のメールを送信しない方がよいでしょう。そのような方法で使用するように設計されているわけではありません。そのようなボリュームを送信する必要がある場合は、バックグラウンドで作業を行うことを検討します.Delayed Jobのようなものがここでうまく機能するか、ここにある多くの非同期レールメーラーの1つがうまくいきます.

ここで本当に見たいのは、あなたが満たそうとしている要件です.Webサイトがメールを同期的に送信する責任を負うことが絶対に必要ですか? ほとんどの場合、その質問に対する答えはノーです。可能であれば、この種のタスクをシステムの別の部分に任せた方がはるかに良いでしょう。サイトをできる限り無駄のないものにして集中力を維持してください。

于 2012-04-12T14:49:10.730 に答える
2

ここでの簡単な解決策... SidekiqまたはResque

Sidekiq を強くお勧めします。これは、複数のワーカーを実行するのにサーバーの負荷がそれほど高くないためです。同時実行の問題にのみ注意してください (2 つのワーカーが同じジョブを取得して重複したメールを送信しないようにしてください)。

20 個の Sidekiq ワーカーを設定するとします。それぞれが 2 ~ 4 秒ごとにメールを送信できるはずです。1 分間に 300 ~ 600 と簡単に計算できます。

Sidekiq、Resque、DelayedJob などのバックグラウンド ワーカーなしでこれを実行しようとしないでください。大量のメールをアプリで送信しようとすると、アプリ全体がフリーズします。アプリでアクティベーションメールを送信しても、不要なスローダウンの問題が発生します.

キューイングを定期的に処理する 1 つの Worker と、送信を処理する別の Worker クラスがあります。これには古いアプリ(sidekiq以前)でResque(おそらく6ワーカー?)を使用して、5分ごとに約500通のメールを問題なく送信しています。

誰かが言及したように、離れてサードパーティを使用できます。Sendgridはまともです。しかし、それは問題ではありませんでした。これは、自分で簡単かつ簡単に行う方法です。

于 2012-12-17T20:34:58.603 に答える
1
  1. 空白のままにすると、sendMail ローカルを使用する場合は、構成ファイルで SMTP 設定を定義します。

  2. 同時

  3. 複数のハンドラー

  4. Rails アプリ用の一括メール プラグインはありますか?

1000.times do email.deliver を実行することもできますが、サーバーが崩壊する可能性があります。

于 2012-04-12T14:33:16.780 に答える