استفاده از Asynchronous در RabbitMQ ، RabbitMQ یک واسط پیام است.پیام هایی از فرستنده را میپذیرد، این پیام ها را در صف ذخیره کرده، و آنها را به گیرنده تحویل میدهد.یک واسط پیام دقیقا مانند یک میانجی بین فرستنده و گیرنده است.
هدف یک واسط این است که پیام های ورودی را از برنامه ها گرفته و برخی عملیات را روی آن انجام داده و این پیام ها را به گیرنده ی صحیح مسیردهی کند.
داخل RabbitMQ، پیام ها داخل یک صف که طبق قانون (FIFO (First In, First Out کار میکند ذخیره میشوند، بدین معنا که پیام هایی که نخست رسیده اند نخست تحویل داده خواهند شد.
این صف های پیام یک پروتکل ارتباطات غیرهمزمان ارائه میدهند، بدین معنا که فرستنده و گیرنده ی پیام نیازی نیست که بطور همزمان با صف پیام interact و تعامل داشته باشند.
Asynchronous چیست؟
برنامه ای که در آن شما پس از درخواستی برای انجام یک کار، منتظر تمام شدن آن نمانید و به کار خود تا جای ممکن ادامه دهید و پس از باز گشتن پاسخ ، پردازش درخواست خود را ادامه دهید، شما در حال استفاده از کد ناهمگام هستید.
معمولا درخواست های کند مثل خواندن و نوشتن دستگاه های ورودی I/O چون دیسک و یا خواندن/نوشتن در شبکه و هر عمل کند دیگری که احتمالا به این سیستم های ورودی و خروجی مربوط است و/یا شامل پردازش های طولانی می شوند به شکل ناهمگام پیاده سازی می شوند.
اگر بخش قبلی مطلب ما را نخوانده اید همواره میتوانید آن را در لینک های زیر بخوانید.
پیام هایی که در صف قرار گرفته اند تا زمانی که گیرنده آنها را بازیابی کند ذخیره می شوند.
Asynchronous
پیش از بکارگیری RabbitMQ در پروژه ی خود، نیاز است که RabbitMQ Server را بر روی کامپیوتر خود نصب کنیم.
نکته – برای نصب RabbitMQ Server، نیاز است Erlang OTP را نصب کنیم.
بنابراین، در اینجا مراحل نصب برای تنظیم سیستم شما آورده شده است.
راهنمای نصب
مرحله ی اول دانلود Erlang OTP از این لینک است.
Asynchronous
پس از دانلود آن، RabbitMQ Server را از این لینک دانلود کنید.
حال، قدم اول نصب Erlang OTP است. پس، بر روی فایل EXE جفت کلیک کرده و آن را نصب کنید.
Asynchronous
تنها بر روی “Next” و “Next” کلیک کنید تا زمانیکه نصب پایان یابد.
Asynchronous
پس از اینکه نصب کامل شد، RabbitMQ Server را همانطور که در ادامه آمده نصب کنید.
Asynchronous
دسترسی برای دیواره ی آتش (Firewall) را همانطور که در زیر نشان داده شده، مجاز کنید.
Asynchronous
پس از مجاز کردن Firewall، تنها بر روی دکمه ی Finish کلیک کرده تا فرآیند نصب را به اتمام برسانید.
Asynchronous
اکنون، محیط کاری ما آماده است، بیایید بررسی RabbitMQ Server را با بررسی سرویس ها شروع کنیم.
Asynchronous
حال، نیاز به برخی تنظیمات برای بررسی و مدیریت صف ها داریم.
برای این کار، نیاز است RabbitMQ Web Management را فعال کنیم.
پس، برای فعال کردن آن، به Start رفته و به دنبال خط فرمان sbin بگردید.
Asynchronous
حال، فرمان زیر را برای فعالسازی Web Management وارد کنید.
- rabbitmq-plugins enable rabbitmq_management
Asynchronous
(plugin) افزایه ی rabbit_management ترکیبی از افزایه های زیر است.
تمام افزایه های زیر هنگام یکه فرمان فوق را اجرا کنید فعال خواهند شد:
- mochiweb
- webmachine
- rabbitmq_web_dispatch
- amqp_client
- rabbitmq_management_agent
- rabbitmq_management
پس از آن، تنها http://localhost:15672/ را تایپ کنید.
صفحه ی وب RabbitMQ زیر را باز خواهد کرد.
Asynchronous
بطور پیشفرض، RabbitMQ بر روی شماره گذرگاه ۱۵۶۷۲ اجرا میشود.
حال، شناسه ی کاربری و رمز عبور پیشفرض برای آن “guest” است.
پس از ورود با شناسه ی کاربری و رمز عبور، شما را به درگاه ورودی خواهد برد که در آنجا میتوانید صف های خود را بررسی کنید، صف هایی را ایجاد کنید، صف ها را حذف کنید و … .
Asynchronous
حال بیایید ویژوال استودیو را باز کرده، و یک پروژه ی Windows Application ایجاد کنیم.
حال، به کنسول NuGet Package رفته و RabbitMQ Client را نصب کنید.
Asynchronous
و در اینجا من فرم خود را به شکل زیر طراحی کرده ام.
Asynchronous
اکنون، زیر دکمه ی Submit کلیک کرده، کد زیر را بنویسید.
private void button1_Click(object sender, EventArgs e) { var factory = new ConnectionFactory() { HostName = "localhost" }; using(var connection = factory.CreateConnection()) using(var channel = connection.CreateModel()) { channel.QueueDeclare(queue: "MyQueue", durable: false, exclusive: false, autoDelete: false, arguments: null); string message = textBox1.Text; var body = Encoding.UTF8.GetBytes(message); channel.BasicPublish(exchange: "", routingKey: "MyQueue", basicProperties: null, body: body); } MessageBox.Show("Message sent successfully."); } }
نکته – برای کار با RabbitMQ، به فضای نام (Namespace) زیر احتیاج داریم.
using RabbitMQ.Client;
توضیح کد
ابتدا، یک پیوند به RabbitMQ Server ایجاد میکنیم.
در اینجا، به یک واسط بر روی ماشین محلی متصل میشویم؛ بنابراین میزبان محلی (localhost) را قرار میدهیم.
اگر بخواهیم به واسطی در یک ماشین دیگر متصل شویم، به سادگی نام یا آدرس IP آن را در اینجا مشخص میکنیم.
پس اساسا، برای پیوند، ۵ پارامتر نیاز خواهد بود.
- آدرس سرویس دهنده
- نام کاربری
- رمز عبور
- ایجاد یک کانال برای ارتباط بین رابط کاربری (UI) و سرویس دهنده (Server).
- ایجاد یک صف برای ذخیره ی پیام ها
Asynchronous
پس از آن بطور ساده پیام ها را از رابط کاربری جمع آوری و به سرویس دهنده ارسال میکنیم.
حال، فقط سعی کنید تعدادی پیام بفرستید و بیایید صف را بررسی کنیم.
Asynchronous
در اینجا، اگر بخواهیم MyQueue را با جفت کلیک بر روی آن بررسی کنیم، شما را به صفحه ای خواهد برد که در آنجا میتوانید پیام های خود را در صف مشاهده کنید.
Asynchronous
در اینجا نمای کلی MyQueue آورده شده است.
Asynchronous
تا به اینجا، پیام را با موفقیت از فرستنده به RabbitMQ Server فرستاده ایم.
در بخش بعدیمان، نحوه ی بازیابی این پیام ها را از طریق ایجاد یک سرویس گیرنده (client) خواهیم آموخت.
هیچ دیدگاهی نوشته نشده است.