Nous avons un client Http2 Jetty construit à peu près comme l'exemple here.Recyclage Jetée Http2 Flux de clients - bonne pratique?
Chaque demande traitée par le client appelle session.newStream(...)
. Il semble que les anciens flux ne sont pas édités par GC. Cependant, nous ne pouvons pas trouver un bon moyen, dans l'API, de les recycler ou de les fermer.
Faut-il définir un très petit délai d'inactivité en utilisant streamPromise.get().setIdleTimeout(t)
?
Devrions-nous conserver l'objet Stream, le marquer quand un échange se termine, puis le réutiliser? Dans ce cas, nous devons également recycler l'écouteur, ce qui rend l'état.
Existe-t-il un moyen de "fermer" un objet Stream ou de le marquer pour GC? Le simple fait de le mettre à null ne semble pas très API-ish.
Toutes nos requêtes sont 'end_stream', elles sont construites comme ceci:' HeadersFrame headersFrame = new HeadersFrame (request, null, true); '. En outre, notre logique métier se termine par '@Override public void onData (flux de données, trame DataFrame, Callback dataCallback) {if (frame.isEndStream()) {...'. Le Stream est-il considéré comme fermé à ce moment-là? – Deroude
Vous devez * compléter * le rappel de données. Si le 'onData()' que vous montrez ci-dessus est sur le client, alors oui le flux est fermé et il a déjà été supprimé juste avant d'appeler 'onData()'. – sbordet