6

このアプリケーションでは、ヒットする外部サービスのコールバック ルートを公開します。コールバックを受け取ると、クライアント/ブラウザー側で Eventsource を使用し、サーバー側で cramp を使用して、クライアント側サブスクライバーに更新を公開します。ただし、この外部サービスから大量のコールバック リクエストが殺到し、大量の更新をクライアントに公開することもあります。メッセージを公開するために受け取ったコールバックの間に設定された時間待機する、JavaScriptのデバウンス関数に似たRails側の方法はありますか?

既に sidekiq + スレッドを使用しているため、これらのツールを使用した提案を受け付けています。

4

1 に答える 1

6

Sidekiq-debounce gemが利用可能です。

別のアプローチ (そのような gem を使用しない) は、 を使用しRails.cacheて x 時間に 1 回だけ実行をトリガーすることです。

delay = 1.minute
Rails.cache.fetch('unique-identifier-of-the-job', expires_in: delay) do
 YourActiveJobHere.set(wait: delay).perform_later('your-action')
end
于 2016-10-10T12:21:01.140 に答える