امیرحسین مرجانی

استفاده از Hangfire در ABP.io

به طور خلاصه Hangfire یک کتابخانه برای نمایش و مدیریت فعالیت های پشتی (BackgroundJon, BackgroundWorker) هست، فریم ورک Abp (به نظر من) بهترین فریم ورک .net  موجود هست که با قراردادن بهترین کتابخانه ها و بهترین تجربیات Best Practice  کمک می کنه تا تیم توسعه درگیر موضوعات زیرساختی نشوند و روی بیزینس اصلی نرم افزار تمرکز کنند. (در آینده در مورد این فریم ورک بیشتر خواهم گفت)

بنا به مستندات Abp  شما می توانید به راحتی ترد (Thread) های پشتی را راه ایجاد کنید، امکان یکپارچه سازی این ترد ها با Hangfire  هم به راحتی وجود دارد. نکته اصلی این هست که در حال حاضر مستندات ارائه شده مشکل دارد و نیاز به بازبینی دارد، البته در یک درخواست پشتیبانی به مشکل و راه حل اون اشاره شده که احتمالا به زودی این مشکل هم برطرف می شود. این درخواست از پشتیبانی مبنای این مطلب بنده هم شده.

بریم سراغ اصل موضوع:

بنا به مستندات برای یکپارچه سازی با Hangfire نیاز دارید ماژول AbpBackgroundWorkersHangfireModule به یکی از ماژول های خود اضافه کنید (در مورد سیستم فوق العاده ماژولاریتی Abp خودتان مطالعه کنید)

تنظیمات Hangfire

بعد از اون به سراغ تنظیمات Hangfire می رویم، همان طور که اطلاع دارید Hangfire  برای ذخیره اطلاعات مورد نیازش به یک پایگاه داده (JobStorage) دارد، این پایگاه داده می تواند Sql Server یا Redis  باشد. در حال حاضر استفاده از Redis  جز پلن پولی هست. تنظیمات در ماژول به صورت زیر خواهد بود (متد ConfigureHangfire را خودم اضافه کردم):

  • در خط 78 اطلاعات اتصال به دیتابیس را تعیین می کنیم، در اینجا مشخص کردیم که اگر برای Hangfire در appsettings.json  کانکشن استرینگ تنظیم نشده بود، از کانکشن استریگ پیش فرض استفاده کن.
  • در خط 85 تنظیمات مربوط به SqlServerStorage  را آماده می کنیم، در مورد تنظیمات می توانید به مستندات مراجعه کنید. نکته خط 92 هست که مشخص می کنیم اگر لازم هست جداول مورد نیاز را بسازد.
  • در خط 96 کانشکشن استرینگ و تنظیمات را برای Hangfire ست می کنیم.

 

تنظیمات Dashbord

برای اینکه بتوانید داشبورد Hangfire را مشاهده کنید، نیاز هست middleware مربوط به آن را اضافه کنید:

بعد از اجرای برنامه داشبود در آدرس /hangfire  در دسترس هست

ساخت BackgroundWorker

بر طبق مستندات یک کلاس Worker  مشتق شده از  HangfireBackgroundWorkerBase ساخته می شود.

  • در خط 21 ایتریشن (چرخه اجرا) را مشخص می کنیم، در ایجا می توانید از cron syntax استفاده کنید.
  • در خط 24  یک تابع DoWorkAsync وجود دارد که فعالیت اصلی در آن تعریف می شود.

در نهایت نیاز هست که این کلاس رو به لیست برنامه های پشتی اضافه کنیم:

در صورتی که سوال یا ابهامی در این مورد دارید با من تماس بگیرید، اطلاعات تماس در صفحه تماس هست

 

 

 

پاسخی بنویسید

یک − یک =