DEV Community

Cover image for RabbitMQ with .NET 8
Mg Chit
Mg Chit

Posted on

RabbitMQ with .NET 8

ဒီ post လေးတင်ရတဲ့ရည်ရွယ်ချက်ကတာ့ Microservice demoကို .NET8 နဲ့လိုတိုရှင်းကျွန်တော်လေ့လာမိသလောက် ပြန်ပြီး share လုပ်ပေးချင်လို့ပါခင်ဗျာ လိုအပ်တာလေးတွေရှိရင်လည်း ထောက်ပြ သင်ပြ ပေးလို့ရပါတယ်ခင်ဗျာ။ ကျွန် တော် ဒီ demo မှာ Blog နဲ့ crud ရေးပြထားတာဖြစ်ပါတယ်။ အဲ့ဒီမှာမှကျွန် တောာ်တို့ project ကို နှစ်ခုခွဲထားတယ် တစ်ခုကတော့ client ဖြစ်ပြီး တစ်ခုကတော့ server ဖြစ်ပါတယ်‌ဗျာ။ client က create, delete, update လုပ်ချင်တဲ့အခါမျိုးမှာ HttpClient , RestClient တို့နှင့် data မပို့ဘဲ Message Broker သုံးပြီးပို့ထားပါတယ်။ အဲ့တွက် package နှစ်လိုပါတယ်။

Image description
MassTransit နဲ့ RabbitMQ ပါ MassTransit ကတော့ message send and receive နဲ့ fail သွားရင် ပြန်ပို့ဖို့ စတဲ့ configure တွေပါတဲ့ library ဘဲဖြစ်ပါတယ်။ RabbitMQ ကတော့ MassTransit ကပို့လိုက်တဲ့ Message ကိုသိမ်းထားပြီး Subscribe လုပ်ထားတဲ့ class တွေကို Message ပို့ပေးဖို့စတဲ့အလုပ်တွေလုပ်ပေးပါတယ်။

Image description
ဒါကတော့ MassTransit ထဲက IPublishEndpoint interface ကိုသုံးပြီး Message ပို့‌ထားပေးတဲ့ class ဖြစ်ပါတယ်။
IPublishEndpoint ကို Constructor Injection အနေနဲ့သုံးနိုင်ဖို့ ဒီ configuration code ကို program.cs မှာထည့်ထားပေးဖို့လိုပါတယ်။

Image description
ဒါကိုတော့ client နဲ့ server ရဲ့ program.cs မှာ ထည့်ပေးဖို့လိုပါတယ်။ ဘာလို့လဲဆိုတော့ MassTransit နဲ့ RabbitMQ ကိုသုံးမယ် ပြီးတော့ ပို့လိုက်တဲ့ message ကိုပြန်ဖမ်းဖို့နဲ့ ယူတဲ့အချိန်မှာ fail သွားခဲ့ရင်ပြန်ယူဖို့ကြိုးစားမယ့်အရာတွေကိုရေးထားတာဖြစ်ပါတယ်ခင်ဗျာ။
ဟုတ်ကဲ့ပါ ပို့လိုက်တဲ့ Message ကိုယူဖို့အတွက် Subscribe လုပ်ပေးဖို့လိုပါတယ်။

Image description

ဒီ Class ကတော့ Server ဘက်ခြမ်းမှာရှိမှာဖြစ်ပါတယ်။
ဒီလောက်ဆို Message Send and Receive ကိစ္စပြီးပါပြီခင်ဗျာ။ Demo မို့ဘာ Logic မှမပါဘဲ ဒီအတိုင်းရေးထားတာဖြစ်ပါတယ်ခင်ဗျာ။

ဘာလို့ HttpClient တို့နဲ့ Data မပို့တာလဲ? HttpClient နဲ့ Data ပို့လိုက်မယ်ဆိုရင် ကျွန်တော်တို့ပို့မယ်ဘက်မှာ error(server down etc)တတ်နေရင် ပို့တဲ့သူပါ fail သွားမှာဖြစ်တာမို့ user experience ကိုထိခိုက်သွားမှာဖြစ်ပါတယ်။ Message Broker ကိုသုံးလိုက်ရင် Client ဘက်ကပို့စရာရှိတာကို ပို့ထားလိုက်ရုံပါပဲ။ Server ဘက် error ပဲဖြစ်နေဘာစေ ပြန်ပြီးကောင်းလာတဲ့အချိန်မှာ ပို့ထားတဲ့ Data ကို access လုပ်ပြီးသူစရာရှိတာဆက်လုပ်နိုင်ပါတယ်။

ဟုတ်ကဲ့ပါ။ ကုဒ်အပြည့်စုံကို ဒီ git မှာ pull ပြီးကြည့်လို့ရပါတယ်။
https://github.com/mgchit-coding/DotNet8.MicroServiceDemo.git
RabbitMQ အတွက် installation ကို docker သုံးထားပါတယ်။
docker-rabbitmq.yml ဒီဖိုင်ရှိတဲ့ directory ထဲထိဝင်ပြီး cmd ကနေ docke-compose up -d လို့ရိုက်ပြီး install နိုင်ပါတယ်။
ကျွန်‌တော်လည်း beginner တစ်ယောက်ဖြစ်နေတာကြောင့် လိုအပ်တာတွေရှိနေမှာ‌‌ သေချာနေမှာမို့ အမှားတွေကိုထောက်ပြ သင်ပြပေးလို့ရပါတယ်ခင်ဗျာ။

ပို့ပြီးပြည့်ပြည့်စုံစုံလေ့လာချင်ရင် ဒီ YouTube channel မှာလေ့လာလို့ရပါတယ်။ ‌
https://www.youtube.com/watch?v=ByYyk8eMG6c&list=WL&index=13&t=18589s
@juliocasal
ကျွန်တော် လေ့လာခဲ့တဲ့ YouTube Channel ပါ။

Top comments (0)