import"trpc.group/trpc-go/trpc-agent-go/session/inmemory"// Default configuration (development)sessionService:=inmemory.NewSessionService()// Result:// - Up to 1000 events per session// - All data never expires// - No automatic cleanup// Production-like configurationsessionService:=inmemory.NewSessionService(inmemory.WithSessionEventLimit(500),inmemory.WithSessionTTL(30*time.Minute),inmemory.WithAppStateTTL(24*time.Hour),inmemory.WithUserStateTTL(7*24*time.Hour),inmemory.WithCleanupInterval(10*time.Minute),)// Result:// - Up to 500 events per session// - Session expires 30 minutes after last write// - App state expires after 24 hours// - User state expires after 7 days// - Expired data cleaned up every 10 minutes
sessionService:=inmemory.NewSessionService(inmemory.WithAppendEventHook(func(ctx*session.AppendEventContext,nextfunc()error)error{log.Printf("Appending event to session %s",ctx.Session.ID)returnnext()}),inmemory.WithGetSessionHook(func(ctx*session.GetSessionContext,nextfunc()(*session.Session,error))(*session.Session,error){sess,err:=next()iferr!=nil{returnnil,err}log.Printf("Got session %s with %d events",sess.ID,len(sess.Events))returnsess,nil}),)
Use Cases
Scenario
Recommended Configuration
Development/Testing
Default configuration
Single-node small apps
Configure TTL and EventLimit
Demo
Default configuration
Unit tests
Default config, create new instance per test
Notes
No persistence: All data is lost after process restart; not suitable for production
Memory usage: Large numbers of sessions may cause high memory usage; configure reasonable EventLimit and TTL
No distributed support: Data is not shared across instances; each instance has independent session data
Concurrency safe: Built-in read-write locks support concurrent access