في عملية التطوير باستخدام Springboot ، غالبًا ما نحتاج إلى التعامل مع سيناريو يتم فيها بدء الخدمة ، يجب تسجيل حالة الخدمة في مركز تسجيل الخدمة (مثل ZK) ، بحيث يمكن تنفيذ حالة الخدمة وإزالة الفشل وموازنة التحميل.
لقد واجهت طريقتين للتسجيل:
1. التسجيل مباشرة بعد بدء ويب الربيع ؛
2. بعد بدء حاوية Servlet ، سجل من خلال المستمع.
تستخدم هذه المقالة عرضًا تجريبيًا لوصف هاتين طريقتين للتسجيل ، باستخدام مخطط التسجيل التقليدي مع ZK.
1. التسجيل بعد بدء ويب الربيع
لنلقي نظرة على الكود أولاً
springBootApplicationPublicpublic class webapplication {private static final logger = loggerfactory.getLogger (webapplication.class) ؛ is_registry الثابتة الخاصة الثابتة = خطأ ؛ public static void main (string [] args) {ApplicationContext 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. والسبب هو أنه لا يمكنك حقن الفول بالطريقة التلقائية أثناء تهيئة WebApplication ، لأنه سيتم قراءة جميع التكوينات ويتم تهيئة الفول أثناء بدء تشغيل WebApplication. لا يمكنك حقن الفول قبل اكتمال التهيئة.
لن يتم توسيع الرمز التفصيلي للتسجيل هنا.
2. بعد تهيئة حاوية servlet ، سجل من خلال المستمع
أو ابدأ الرمز أولاً
WebListenerPublic Class Recordlistener تنفذ ServletContextListener {محمية logger logger = loggerfactory.getLogger (this.getClass ()) ؛ is_registry الثابتة الخاصة الثابتة = خطأ ؛ @autowired zkclient zkclient ؛ Override public void contextInitialized (servletContexTevent ServletContexTevent) {try {if (! is_registry) {logger.info ("التسجيل 1: بعد بدء حاوية servlet بنجاح") ؛ zkclient.register () ؛ logger.info ("السجل 1: سجل بنجاح") ؛ } is_registry = true ؛ } catch (استثناء e) {is_registry = false ؛ logger.info ("السجل 1: فشل التسجيل") ؛ }} Override public void contextDestroyed (servletContexteventventventvent ServletContextvent) {if (is_registry) {zkclient.stop () ؛ }}}تحتاج إلى كتابة مستمع أولاً. يقوم هذا المستمع بتنفيذ واجهة ServletContextListener ويقوم بتعليقها باستخدام WebListener. هذه هي طريقة الاستماع إلى شرح Springboot.
بعد بدء حاوية Servlet بنجاح ، سيتم استدعاء الطريقة السياقية للمستمع. إذا تم تدمير حاوية Servlet ولم تتمكن من تقديم الخدمات ، فسيتم استدعاء طريقة ContextDestroyed للمستمع. بمعنى آخر ، يستمع هذا المستمع إلى حالة حاوية Servlet.
ثم تحتاج فقط إلى فتح تكوين المستمع في الفئة الرئيسية للتطبيق.
@servletcomponentscan@springbootapplicationpublic class webapplication {}3. مقارنة هاتين الطريقتين
بالنسبة لخدمة الويب التي توفر بروتوكول HTTP خارجيًا ، سيكون تسجيل حاوية Servlet أكثر وضوحًا في الدلالات. ومع ذلك ، إذا بدأت حاوية Spring الخاصة بك لفترة طويلة ، فقد يتم إكمال وتسجيل تهيئة Servlet ، ولكن لا يمكن للخدمة توفير الوصول إلى وقت الفجوة خارجيًا ، لذلك أستخدم الطريقة الأولى بشكل عام للتسجيل.
هذا السيناريو مثل هذا
يمكن ملاحظة أنه بعد نجاح تسجيل Servlet ، لم يتم البدء في Webapplication بعد ، ولا يمكن للخدمة توفير الوصول بشكل طبيعي في هذا الوقت.
يمكنك أن ترى على ZK أن كلا التسجيلات كانت ناجحة.
لخص
ما ورد أعلاه هو شرح مفصل لمركز تسجيل خدمة تسجيل سبرينغ بوت (ZK) الذي قدمه لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!