より良い解決策
Throttler プラグインの使用は、/かなり/簡単です。
YML を使用するのは、それが私にとってより正気だからです。
カスタム サービスのセットを定義する必要があります。これを行う/少し/より良い方法があるかもしれませんが、うまくいくはずです。
まず、スロットラー サービスを定義します。
services:
my.throttler:
class: Swift_Plugins_ThrottlerPlugin
arguments: [300, 2]
メーラーの独自のインスタンスを定義します。
services:
my.mailer:
class: Swift_Mailer
arguments: [@swiftmailer.transport]
calls:
- [ registerPlugin, [ @my.throttler ] ]
これで、サービス my.mailer を使用して、スロットルされた電子メールを 5/秒で送信するように設定する必要があります。
元の回答
より高度な解決策で機能するようにするには、デフォルトのキュー ハンドラーを拡張する必要があります。
Swift_Transport_SpoolTransport は、探し始めたい場所です。
もう 1 つのオプションは、引数 --time-limit=1 --message-limit=5 でデフォルトのスプールを実行するデーモン サービスを介して実行するコマンドを構築することです。それは失敗するたびに再実行されます。
SpoolTransport を拡張することは明らかに健全なオプションですが、2 番目の解決策は一般的に追跡するのにより集中的になります。