in particolare sono interessato al caso in cui l'altra estremità del canale muore in modo imprevisto (ad esempio il processo viene ucciso). sembra che netty non licenzi in modo affidabile un evento di chiusura/disconnessione del canale, a volte lo fa e altre volte no. inoltre, non genera necessariamente una SocketException per la reimpostazione della connessione.può rilevare in modo affidabile la chiusura/disconnessione del canale?
per quello che vale, ho anche provato a scrivere sul canale ma anche questo continua a funzionare senza generare eccezioni o sparare a nessun altro evento.
sto testando questo su Windows, con netty 3.3.0.Final, se questo fa alcuna differenza.
un problema è che Netty continua allegramente a scrivere su un canale che è stato chiuso all'altra fine. è l'unico modo per rilevare in modo affidabile il canale su heartbeat e aspettarsi una risposta? –
Se si cola manualmente la connessione, dovrebbe funzionare. Potrebbe esserci un modo alternativo per rilevare la disconnessione, ma questo è il documento per netty. Il mio secondo suggerimento è controllare e leggere sul metodo setReadable e isWritable di Channel. Puoi controllare lo stato del canale con Channel.isWritable all'interno del produttore e rendere leggibile il canale con Channel.setReadable all'interno del consumer. Non sono sicuro, ma quest'ultimo trucco potrebbe funzionare. – ozhan