クライアント側のapi呼び出しでレート制限を実装しようとしています。 15分ごとに同じapi(10 reqs/secに限る)を使用するSymfony2のコマンドは約20個あるので、RabbitMQを使用する必要があったため、プロセスがメモリ不足にならないようにしたり、Symfony2、RabbitMQとRedisスロットル
apiコールはコマンドとRabbitMQワーカーで実行されるので、RabbitMQでもそれらを抑制する必要があります。私は労働者が私の場合にはそのような仕事をしてはいけないと知っていますが、私はすべてをリファクタリングする時間がありません。
私のRabbitMQワーカーのすべてのコマンドに共通の方法を絞ることは可能ですか?私はhttps://github.com/jaytaph/RateLimitBundleとhttps://github.com/snc/SncRedisBundle(私のシステムには、predisライブラリとRedisがインストールされ、実行中である)を試していますが、ちょっとしたことがあります。
レート制限が最大に近づいた場合、どのように処理する必要がありますか?イベントリスナーが必要ですか?レディスのレート制限をチェックしなければならないのですか?
snc_redis:
clients:
default:
type: predis
alias: default
dsn: redis://localhost
レートリミット設定:
noxlogic_rate_limit:
enabled: true
storage_engine: "redis"
redis_client: default
rate_response_code: 429
rate_response_exception: Symfony\Component\HttpKernel\Exception\TooManyRequestsHttpException
display_headers: true
headers:
limit: X-RateLimit-Limit
remaining: X-RateLimit-Remaining
reset: X-RateLimit-Reset