アイテムをコンシューマー(C)にプッシュするプロデューサー(P)がいます。Cは、到着後すぐにすべてのアイテムを消費しないことを決定する場合があります。代わりに、キューにn個のアイテムがあるまで、または特定の時間間隔tが経過するまで非同期で待機してから、キュー内のすべてのアイテムを消費してタイマーを再起動する場合があります。
Pは、Cにプッシュしたアイテムが実際に消費されたときに通知を受ける必要があります。これは、障害が発生した場合の回復をPが担当するためです(Pは現在の状態をDBに保持します)。したがって、再起動の場合、Pは、消費者によって承認されていないため、どのアイテムを再度プッシュする必要があるかを知る必要があります。
私の最初のアイデアは、Cにコールバック関数(デリゲート)を介してPに通知させることでした。アイテムが消費されるたびに、消費されたアイテムのリストを使用してPのコールバック関数が呼び出されます。
しかし、プロデューサーに通知する他の(より良い)方法があるのではないかと思います。あなたの考えは何ですか?
ステファノ
更新:これまでの回答ありがとうございます。私は現在、非同期メソッドを使用することが、発行されているアイテムのステータスについて発行者と消費者を同期させるための洗練された方法であるかどうかを調査しています。