Существует очень мало (хороших) ресурсов по передовым методам обработки ошибок в Netty, и моя команда видела немало случаев, когда ошибки молча проглатывались, что делает отладку менее приятной.
Мне просто было интересно, хорошая ли стратегия по умолчанию - просто передать обещание, переданное в write()
при выполнении выигрыша ctx.write(msg,promise)
?
Я написал кучу "обучения /исследовательские " тесты, чтобы лучше понять обработку исключений Netty, и я обнаружил, что обработчик исключений ближе к хвосту конвейера обработчика, чем источник исключения, будет вызывать только прослушиватель его обещаний, если каждый обработчик передаст его.До этого момента мы обычно просто делали ctx.write(msg)
, теряя ChannelPromise
, который был отправлен. Конечно, если вы хотите сделать что-то еще и передать другое обещание (ctx.newPromise()
), вы делаете это, но яИнтересно, будет ли смысл давать обещание за дефолт?
Если так, почему Netty не делает этого по умолчанию?Я думаю, что это имеет смысл, когда вызывающий просто вызывает перегрузку ctx.write(msg)
, так как большинство людей не хотят, чтобы исключения отбрасывались без предупреждения.