بیاموزید که چگونه می توانید معیارهای استاندارد و سفارشی را با چارچوب Micronaut جمع آوری کنید.
نویسندگان: برت بکوییت
نسخه میکرون: 3. 7. 3
1. شروع کار
در این راهنما ، ما یک برنامه Micronaut ایجاد خواهیم کرد که در Groovy نوشته شده است.
ما از میکرونوت میکرومتر برای افشای داده های متریک کاربرد با میکرومتر استفاده خواهیم کرد.
2. آنچه شما نیاز خواهید داشت
برای تکمیل این راهنما ، به موارد زیر نیاز خواهید داشت:
مدتی روی دستان شما
ویرایشگر متن مناسب یا IDE
JDK 1. 8 یا بیشتر نصب شده با Java_Home به طور مناسب پیکربندی شده است
3. راه حل
توصیه می کنیم دستورالعمل ها را در بخش های بعدی دنبال کنید و برنامه را به صورت مرحله به مرحله ایجاد کنید. با این حال ، شما می توانید درست به مثال کامل بروید.
منبع را بارگیری و از حالت فشرده خارج کنید
4. نوشتن برنامه
اگر استدلال ساخت و ساز را مشخص نکنید ، از Gradle به عنوان ابزار ساخت استفاده می شود. اگر استدلا ل-لانگ را مشخص نکنید ، جاوا به عنوان زبان استفاده می شود. |
دستور قبلی یک برنامه Micronaut با مثال بسته بندی پیش فرض ایجاد می کند. Micronaut در دایرکتوری به نام MicronAutguide.
اگر از Micronaut Launch استفاده می کنید ، برنامه Micronaut را به عنوان نوع برنامه انتخاب کرده و میکرومتر-آنوتاسیون ، Data-JDBC و ویژگی های Flyway را اضافه کنید.
اگر یک برنامه Micronaut موجود دارید و می خواهید عملکرد شرح داده شده را در اینجا اضافه کنید ، می توانید تغییرات وابستگی و پیکربندی را از ویژگی های مشخص شده مشاهده کرده و آن تغییرات را در برنامه خود اعمال کنید. |
4. 1پیکربندی معیارها
چندین گروه از معیارها به طور پیش فرض فعال می شوند. این موارد شامل معیارهای سیستم (اطلاعات JVM ، به موقع و غیره) و همچنین درخواست های وب ردیابی معیارها ، فعالیت داده های داده و سایر موارد است. معیارهای کلی می توانند فعال یا غیرفعال شوند و گروه ها می توانند به صورت جداگانه در پیکربندی فعال یا غیرفعال شوند.
موارد زیر را به Application. yml اضافه کنید:
1 | تغییر به دروغ برای غیرفعال کردن تمام معیارها ، به عنوان مثال ، هر محیط |
2 | این موارد به طور پیش فرض درست است و فقط برای راحتی در اینجا هستند تا بتوانند زیر مجموعه ای از معیارها را غیرفعال کنند |
4. 2معیارهای سفارشی
اگر معیارهای داخلی کافی نیستند ، می توانید به راحتی معیارهای سفارشی را با حاشیه نویسی های زیر اضافه کنید.
یک متریک تایمر ایجاد می کند که شامل کل زمان ، حداکثر زمان و تعداد است.
یک متریک پیشخوان ایجاد می کند که فقط حاوی شمارش است.
اگر می خواهید سنج خود را ایجاد کنید ، می توانید io. micrometer. core. instrument. meterregistry را به لوبیا خود تزریق کنید.
4. 3معیارهای منبع داده
در صورت استفاده از Hikaricp (پیش فرض) ، Tomcat JDBC یا استخر اتصال Commons DBCP ، معیارهای DataSource به طور پیش فرض فعال می شوند.
4. 4مهاجرت پایگاه داده با Flyway
ما به راهی برای ایجاد طرح پایگاه داده نیاز داریم. برای این کار ، ما از ادغام میکرون با Flyway استفاده می کنیم.
Flyway تغییرات طرحواره ای را به طور قابل توجهی انجام می دهد ، به طور قابل توجهی وظایف مدیریت طرحواره مانند مهاجرت ، چرخش به عقب و تولید مثل در چندین محیط را ساده می کند.
قطعه زیر را اضافه کنید تا وابستگی های لازم را شامل شود:
ما Flyway را در Application. yml فعال می کنیم و آن را پیکربندی می کنیم تا مهاجرت ها را در یکی از منابع داده تعریف شده انجام دهد.
1 | Flyway را برای DataSource پیش فرض فعال کنید. |
پیکربندی چندین منبع داده به سادگی فعال کردن پرواز برای هر یک است. همچنین می توانید دایرکتوری هایی را که برای مهاجرت هر منبع داده استفاده می شود ، مشخص کنید. برای جزئیات بیشتر مستندات Micronaut Flyway را مرور کنید. |
مهاجرت Flyway به طور خودکار قبل از شروع برنامه میکرونوت شما انجام می شود. Flyway دستورات مهاجرت را در منابع/db/مهاجرت/فهرست می خواند ، در صورت لزوم آنها را اجرا می کند و تأیید می کند که منبع داده پیکربندی شده با آنها سازگار است.
فایل های مهاجرتی زیر را با ایجاد طرحواره پایگاه داده ایجاد کنید:
در طول راه اندازی برنامه، Flyway فایل SQL را اجرا می کند و طرح مورد نیاز برای برنامه را ایجاد می کند.
4. 5. دامنه
یک کلاس دامنه Book ایجاد کنید که از Micronaut Data JDBC استفاده می کند:
1 | کلاس را با MappedEntity@ حاشیه نویسی کنید تا کلاس را به جدول تعریف شده در طرح نگاشت کنید. |
2 | شناسه یک موجودیت را مشخص می کند |
3 | مشخص می کند که مقدار ویژگی توسط پایگاه داده تولید می شود و در درج ها گنجانده نمی شود |
4. 6. مخزن کتاب
سپس، رابط BookRepository را برای تعریف عملیات پایگاه داده ایجاد کنید. Micronaut Data رابط را در زمان کامپایل پیاده سازی می کند:
1 | @JdbcRepository با یک گویش خاص. |
2 | مشخص می کند که Book موجودیت ریشه است و نوع کلید اصلی Long است. |
4. 7. کلاس جمع کننده داده
یک کلاس DataPopulator برای ایجاد چند نمونه از ورودی های پایگاه داده هنگام شروع برنامه ایجاد کنید:
1 | از jakarta. inject. Singleton برای تعیین یک کلاس به عنوان تک تن استفاده کنید. |
2 | از تزریق سازنده برای تزریق Bean از نوع BookRepository استفاده کنید. |
3 | یک روش را با @EventListener حاشیه نویسی کنید تا در رویدادی که به عنوان پارامتر متد تعریف می کنید، مشترک شوید. |
4 | می توانید یک متد یا کلاس را به عنوان تراکنشی با حاشیه نویسی javax. transaction. Transactional اعلام کنید. |
4. 8. BookController
برای دسترسی به نمونه های کتاب (و راه اندازی داده های متریک JDBC)، BookController ایجاد کنید:
1 | کلاس به عنوان یک کنترلر با حاشیه نویسی @Controller در مسیر /books نگاشت شده است. |
2 | بسیار مهم است که هرگونه عملیات ورودی/خروجی مسدود کننده (مانند واکشی داده ها از پایگاه داده) در یک thread pool جداگانه بارگذاری شود که حلقه رویداد را مسدود نکند. |
3 | از تزریق سازنده برای تزریق Bean از نوع BookRepository استفاده کنید. |
4 | یک درخواست GET را به /books نگاشت می کند که فهرستی از Book را برمی گرداند |
5 | یک متریک تایمر با نام داده شده ایجاد می کند. اگر نام حذف شود، به طور پیشفرض روی method. timed تنظیم میشود. |
6 | یک درخواست GET را به /books/ نگاشت می کند، که تلاش می کند یک کتاب را نشان دهد. این نشان دهنده استفاده از متغیر مسیر URL است. |
7 | یک متریک شمارنده با نام داده شده ایجاد می کند. اگر نام حذف شود، به طور پیش فرض روی روش. counted قرار می گیرد. |
4. 9. معیارهای سفارشی
برای مشاهده معیارهای سفارشی در عمل، سرویسی ایجاد کنید که به صورت دوره ای قیمت فعلی بیت کوین را به دلار با استفاده از REST بازیابی می کند.
4. 9. 1. مدل
برای نمایش پاسخ REST به یک کلاس داده نیاز داریم. کلاس BitcoinPrice را ایجاد کنید:
1 | برای تولید فراداده BeanIntrospection در زمان کامپایل، کلاس را با @Introspected حاشیه نویسی کنید. از این اطلاعات می توان برای مثال برای ارائه POJO به صورت JSON با استفاده از جکسون بدون استفاده از بازتاب استفاده کرد. |
4. 9. 2. مشتری HTTP اعلامی Kucoin
رابط کاربری Micronaut HTTP Client اعلامی ایجاد کنید که در زمان کامپایل پیاده سازی می شود:
1 | برای استفاده از کلاینت های HTTP اعلانی از @Client استفاده کنید. می توانید رابط ها یا کلاس های انتزاعی را حاشیه نویسی کنید. می توانید از عضو شناسه برای ارائه شناسه سرویس استفاده کنید یا URL را مستقیماً به عنوان مقدار حاشیه نویسی مشخص کنید. |
4. 9. 3. پیکربندی سرویس HTTP
برای پیکربندی URL برای شناسه سرویس kucoin، application. yml را تغییر دهید:
1 | شناسه ای که با @Client استفاده کردیم |
2 | آدرس اینترنتی سرویس kucoin |
4. 9. 4. سرویس
یک کلاس CryptoService ایجاد کنید که از PriceClient استفاده می کند و سه متر سفارشی را به روز می کند:
1 | از jakarta. inject. Singleton برای تعیین یک کلاس به عنوان تک تن استفاده کنید. |
2 | از تزریق سازنده برای تزریق دانه های PriceClient، MeterRegistry و ObjectMapper استفاده کنید. |
3 | یک شمارنده برای ردیابی تعداد کل به روز رسانی ها ایجاد کنید |
4 | یک تایمر برای ردیابی کل زمان انجام به روز رسانی ایجاد کنید |
5 | یک گیج برای ردیابی آخرین به روز رسانی ایجاد کنید |
6 | از حاشیه نویسی Scheduled برای پیکربندی به روز رسانی های منظم استفاده کنید |
7 | تایمر را به روز کنید |
8 | شمارنده را افزایش دهید |
9 | گیج را با آخرین قیمت به روز کنید |
5. آزمایش برنامه
فایل پیکربندی src/test/resources/application-test. yml را برای تست ها ایجاد کنید.
1 | جستجوی قیمت کریپتو را با تاخیر اولیه طولانی غیرفعال کنید |
یک کلاس آزمایشی برای تأیید عملکرد معیارها ایجاد کنید:
1 | کلاس را با @MicronautTest حاشیه نویسی کنید تا چارچوب Micronaut زمینه برنامه و سرور تعبیه شده را مقداردهی اولیه کند. اطلاعات بیشتر. |
2 | Bean MeterRegistry را تزریق کنید |
3 | LoggingSystem bean را تزریق کنید |
4 | Bean HttpClient را تزریق کنید و آن را به سرور تعبیه شده نشان دهید. |
یک کلاس آزمایشی اضافی برای تأیید معیارهای سفارشی ایجاد کنید:
تست قبلی دو سرور جاسازی شده Micronaut ایجاد می کند. یکی API kucoin را مسخره می کند، دیگری برنامه ما است. این آزمایش از @Requires برای بارگذاری شرطی یک کنترلر فقط برای زمینه کوکوین bean استفاده می کند. ما از یک شناسه با @Client استفاده کردیم که به راحتی میتوان مشتری HTTP خود را به سرور ساختگی اشاره کرد.
5. 1. اجرای تست ها
برای اجرای تست ها:
سپس build/reports/tests/test/index. html را در مرورگر باز کنید تا نتایج را ببینید.
6. اجرای برنامه
برای اجرای برنامه از دستور ./gradlew run استفاده کنید که برنامه را روی پورت 8080 راه اندازی می کند.
متناوبا، برای اینکه بهروزرسانی قیمت بیتکوین بهطور مکرر انجام شود تا تأثیرات آن روی معیارها مشاهده شود، برنامه را با یک تغییر پیکربندی شروع کنید تا هر پنج ثانیه یکبار بهروزرسانی شود:
با استفاده از cURL می توانید فهرستی از معیارهای شناخته شده را بازیابی کنید:
پاسخ باید به شکل زیر باشد:
پس از اینکه برنامه برای مدتی اجرا شد و چند بررسی قیمت بیت کوین انجام داد، می توانیم مقادیر متریک مربوطه را مشاهده کنیم: