基本的に、一時的なチャット メッセージをサーバー側に格納するためのデータ構造が必要です。そのはず:
制限あり: あまり多くのメッセージを保存する必要がないため、クライアントは新しいメッセージを取得するためのリクエストを毎秒送信します。バインドされたサイズは最大にする必要があると思います。1 秒での同時リクエストのマウント。バッファがいっぱいになると、古いメッセージが削除されます。
高い同時アクセスに適しています: Collections.synchronizedXXXX のようなデータ構造を使用したくありません。反復中に、他のスレッドがデータ構造を変更すると (メッセージを追加するなど)、例外がスローされるため、ロックする必要があるためです。データ構造全体、実際にはクライアントリクエストが最後に挿入されたメッセージを取得できるかどうかはあまり気にしません.1秒後に新しいリクエストを送信するためです. パッケージ java.util.concurrency の下のクラスが解決策のようですが...
非ブロッキング: LinkedBlockingQueue、ArrayBlockingQueue これらは制限される可能性があり、反復中に例外をスローしませんが、すべてブロッキング キューです。キューがいっぱいになったら、新しい要素をテールに追加し、古い要素をヘッドでブロックするのではなくヘッドから削除し、誰かがヘッダーを削除するのを待ちます。
私の質問は、第 3 ライブラリからの適切な実装はありますか? たとえば、Googleグアバ?または、一時的なチャット メッセージをサーバーに保存することについて、より良い考えをお持ちですか?
どうもありがとうございます!