Java >> Java tutorial >  >> Tag >> Netty

Nedluk netty programmatisk

En måde er at lave noget som:

// once having an event in your handler (EchoServerHandler)
// Close the current channel
ctx.channel().close();
// Then close the parent channel (the one attached to the bind)
ctx.channel().parent().close();

Gør du på denne måde ender det med følgende:

// Wait until the server socket is closed. Thread gets blocked.
f.channel().closeFuture().sync();

Intet behov for en ekstra tråd om hoveddelen. Nu er spørgsmålet:hvilken slags begivenhed? Det er op til dig... Kan være en besked i ekkohåndteringen som "shutdown", der vil blive taget som en ordre om nedlukning og ikke kun "quit", som kun vil lukke klientkanalen. Måske noget andet...

Hvis du ikke håndterer nedlukningen fra en børnekanal (altså gennem din behandler), men gennem en anden proces (f.eks. leder efter en eksisterende stopfil), så har du brug for en ekstra tråd, der venter på denne begivenhed og derefter direkte laver en channel.close() hvor kanalen vil være den overordnede (fra f.channel() ) for eksempel...

Der findes mange andre løsninger.


Java tag