1515
1616import java .util .List ;
1717import java .util .Map ;
18- import java .util .concurrent .LinkedBlockingQueue ;
18+ import java .util .Queue ;
19+ import java .util .concurrent .ArrayBlockingQueue ;
1920import java .util .function .Function ;
2021import java .util .stream .Collectors ;
2122
2829 * @since 2025-07-04
2930 */
3031public class RecentMemory implements Memory {
31- private final LinkedBlockingQueue <ChatMessage > records ;
32+ private final Queue <ChatMessage > records ;
3233 private final BulkStringTemplate bulkTemplate ;
3334 private final Function <ChatMessage , Map <String , String >> extractor ;
3435
@@ -59,13 +60,14 @@ public RecentMemory(int maxCount) {
5960 public RecentMemory (int maxCount , BulkStringTemplate bulkTemplate ,
6061 Function <ChatMessage , Map <String , String >> extractor ) {
6162 Validation .greaterThanOrEquals (maxCount , 0 , "The max count should >= 0." );
62- this .records = new LinkedBlockingQueue <>(maxCount );
63+ this .records = new ArrayBlockingQueue <>(maxCount );
6364 this .bulkTemplate = notNull (bulkTemplate , "The bulkTemplate cannot be null." );
6465 this .extractor = notNull (extractor , "The extractor cannot be null." );
6566 }
6667
6768 @ Override
6869 public void add (ChatMessage message ) {
70+ notNull (message , "The message cannot be null." );
6971 if (!this .records .offer (message )) {
7072 this .records .poll ();
7173 this .records .offer (message );
@@ -74,6 +76,7 @@ public void add(ChatMessage message) {
7476
7577 @ Override
7678 public void set (List <ChatMessage > messages ) {
79+ notNull (messages , "The messages cannot be null." );
7780 messages .forEach (this ::add );
7881 }
7982
0 commit comments