3

アプリケーション REST API の一部としてWeb フックを実装しようとしています。

最初は、API コンシューマーがエンティティ更新イベントに登録するためのメカニズムの実装を検討しています。そのため、エンティティが変更された場合、そのエンティティの変更イベントに登録されているすべての Webhook を呼び出します (また、登録プロセスの一部として、API コンシューマーは追加のフィルター基準を含めて、関心のあるエンティティのサブセットのコールバックのみを受け取るようにすることができます)。の)。

現在、これはユーザーが開始した変更にはうまく機能し、ゆっくりと変化しますが、変更の洪水が発生した場合にこれをどのように処理するのが最善かについて心配しています-たとえば、UIで実行される一括アクションの一部として、またはAPI コンシューマから発生する変更の洪水。

これまでのところ、次のことを検討しました。

  • ある種の非同期プールを使用して、エンティティごとにコールバックを実行するだけです。ここで見られる問題は、スケールであり、Web フックにサブスクライブするアプリケーションに害を及ぼす可能性があります。
  • Webhook 登録ごとに、たとえば 10 秒のウィンドウで変更のレコードをキューに入れ、影響を受けるエンティティのリストを含む 1 つの Webhook 通知をサブスクライブにプッシュします。 、イベントがちょろちょろと入ってくるだけの場合 - これは、特に Web ファームのシナリオでこれを実装する場合に、いくらかのオーバーヘッドと複雑さをもたらします。
  • 一括アクションを Web フックとして実際に公開します。したがって、一括削除が実行された場合、コンシューマーはこれをサブスクライブします。そのため、個々のエンティティ変更のフックを設定しても、一括更新/削除などのエンティティ変更イベントは受信されません。一括アクション Web フックを介してこれを処理する必要があります。

追加の詳細として、このアプリケーションの一括アクションには、10 から約 100,000 のエンティティが含まれる可能性があります。

これをどのように実装することにしたかを明らかにすることができる一括アクション用の Web フックを実装した人はいますか?

4

1 に答える 1

1

私たちは最近、Rest API の一部として Web フックを実装しましたが、大きな懸念事項は一括アクションについてもありました。私たちの場合は一括インポートで、ユーザーは Web アプリを介して Excel または CSV ファイルのレコードをインポートできます。

当社のインポート プロセスは、プロセス全体がトランザクションで実行されるように設計されています。したがって、失敗した場合は単純にロールバックして何もせず、正常に完了した場合は、影響を受けるエンティティに関する情報を含む 1 つの巨大なボディを使用して、サブスクライブしたクライアントに 1 つの Web フック通知をポストします。

アプリケーションで一括操作がどのように行われるかわかりません。トランザクション内であれば、問題はありません。それ以外の場合は、単一アクション Web フックと一括アクション Web フックを分けておくことをお勧めします。これは、Webhook を使用することの欠点の 1 つだと思います。連続した POST 要求でサブスクライバーをダウンさせる可能性があります。

于 2012-09-20T18:53:04.180 に答える