メッセージを継続的に受信するアプリケーションを開発しています。これらのメッセージをメモリ内のデータ構造(リストなど)に保存しています。これらのメッセージをファイルに書き込みたいのですが、リストサイズが100メッセージなどのしきい値に達した後でのみです(メッセージに対してバッチ処理を実行します)。1つの方法は、すべてのメッセージを受信した後にリストサイズを確認し、しきい値に達した場合にファイルにメッセージを書き込む関数を呼び出すことです。しかし、このアプローチの問題は次のとおりです。
- 呼び出し元の関数は、すべてのメッセージがファイルに書き込まれるまで無期限に待機する必要がある場合があります
- 受信メッセージは、処理中に失われるか、リストに保存されるのを待つ必要がある場合があります。
他の方法は、新しいスレッドを生成することです。これにより、メッセージがファイルに個別に書き込まれます。しかし、書き込み操作を実行するためにリスト(メッセージを含む)をスレッドに渡すと、継続的に着信する新しいメッセージで更新されます。その結果、新しく到着したメッセージも予期しないファイルに書き込まれます。
新しいメッセージを次のバッチで書き込むつもりなので、これは発生しないはずです。
誰かが私にこの要件の解決策、または私の問題を解決できる上記のアプローチの改善を提案できますか?