В процессе разработки с использованием Springboot нам часто нужно иметь дело со сценарием, в котором запускается сервис, статус услуги должен быть зарегистрирован в Центре регистрации услуг (например, ZK), чтобы при изменении статуса обслуживания может быть выполнено удаление сбоев и балансировка нагрузки.
Я столкнулся с двумя способами зарегистрироваться:
1. Зарегистрируйтесь непосредственно после начала весны WebPplication;
2. После того, как контейнер сервлета запускается, зарегистрируйтесь через слушатель.
В этой статье используется демонстрация для описания этих двух методов регистрации, используя традиционную схему регистрации с ZK.
1. Зарегистрируйтесь после начала весны WebPplication
Давайте сначала посмотрим на код
@Springbootapplicationpublic class webapplication {private static final logger logger = loggerfactory.getLogger (webApplication.class); Частный статический летучий логический public static void main (string [] args) {applicateContext context = run (webapplication.class, args); if (is_registry) {logger.info ("Регистр 2: после запуска WebApplication"); Zkclient zkclient = context.getbean (zkclient.class); zkclient.register (); Is_registry = true; logger.info («Регистр 2: регистрация была успешной»); }}}Здесь мы получаем ZKClient в WebApplication и регистрацию.
Здесь следует отметить, что мы используем ApplicationContext для получения боба ZKClient. Причина в том, что вы не можете внедрить бобы автоматическим способом во время инициализации веб -привязки, потому что все конфигурации будут считываться, а бобы инициализируются во время запуска веб -привязки. Вы не можете вводить бобы до завершения инициализации.
Подробный код для регистрации здесь не будет расширен.
2. После инициализированного контейнера сервлета, зарегистрируйтесь через слушатель
Или сначала запустите код
@Weblistenerpublic class RegisterListener реализует ServletContextLister {Защищенный окончательный logger logger = loggerFactory.getLogger (this.getClass ()); Частный статический летучий логический @Autowired private zkclient zkclient; @Override public void contextInitialized (ServletContexTevent ServletContexTexTevent) {try {if (! Is_registry) {logger.info («Регистр 1: после успешного запуска контейнера сервлета»); zkclient.register (); logger.info ("Регистрация 1: регистр успешно"); } Is_registry = true; } catch (Exception e) {is_registry = false; logger.info ("Регистр 1: Регистрация не удалась"); }} @Override public void contextDestroyed (ServletContexTevent servletContexTextent) {if (is_registry) {zkclient.stop (); }}}Вам нужно сначала написать слушателя. Этот слушатель реализует интерфейс ServletContextListener и аннотирует его @Weblistener. Это метод прослушивания аннотации Springboot.
После того, как контейнер сервлета будет успешно запущен, будет вызван контекстный метод слушателя. Если контейнер сервлета уничтожен и не может предоставить услуги, контекст, созданный метод слушателя. Другими словами, этот слушатель слушает состояние контейнера сервлета.
Затем вам просто нужно открыть конфигурацию слушателя в основном классе приложения.
@Servletcomponentscan@springbootapplicationpublic class webapplication {}3. Сравнение этих двух методов
Для веб -службы, которая предоставляет протокол HTTP внешне, регистрация контейнера сервлета будет более четкой в семантике. Однако, если ваш пружинный контейнер запускается слишком долго, инициализация сервлета может быть завершена и зарегистрирована, но служба не может предоставить доступ к временю разрыва снаружи, поэтому я обычно использую первый метод для регистрации.
Этот сценарий такой
Можно видеть, что после успешной регистрации сервлета, WebApplication еще не началась, и в настоящее время сервис не может предоставлять доступ нормально.
Вы можете увидеть на ZK, что обе регистрации были успешными.
Суммировать
Выше приведено подробное объяснение регистрационного центра регистрации Springboot (ZK), введенного вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!