استفاده از Asynchronous در RabbitMQ

Asynchronous

استفاده از Asynchronous در RabbitMQ ، RabbitMQ یک واسط پیام است.پیام‏ هایی از فرستنده را می‏پذیرد، این پیام‏ ها را در صف ذخیره کرده، و آن‏ها را به گیرنده تحویل می‏دهد.یک واسط پیام دقیقا مانند یک میانجی بین فرستنده و گیرنده است.

هدف یک واسط این است که پیام‏ های ورودی را از برنامه ‏ها گرفته و برخی عملیات را روی آن انجام داده و این پیام ‏ها را به گیرنده‏ ی صحیح مسیردهی کند.

داخل RabbitMQ، پیام‏ ها داخل یک صف که طبق قانون (FIFO (First In, First Out کار می‏کند ذخیره می‏شوند، بدین معنا که پیام ‏هایی که نخست رسیده ‏اند نخست تحویل داده خواهند شد.

این صف‏ های پیام یک پروتکل ارتباطات غیرهمزمان ارائه می‏دهند، بدین معنا که فرستنده و گیرنده‏ ی پیام نیازی نیست که بطور همزمان با صف پیام interact  و تعامل داشته باشند.

Asynchronous چیست؟

برنامه ای که در آن شما پس از درخواستی برای انجام یک کار، منتظر تمام شدن آن نمانید و به کار خود تا جای ممکن ادامه دهید و پس از باز گشتن پاسخ ، پردازش درخواست خود را ادامه دهید، شما در حال استفاده از کد ناهمگام هستید.

معمولا درخواست های کند مثل خواندن و نوشتن دستگاه های ورودی I/O چون دیسک و یا خواندن/نوشتن در شبکه و هر عمل کند دیگری که احتمالا به این سیستم های ورودی و خروجی مربوط است و/یا شامل پردازش های طولانی می شوند به شکل ناهمگام پیاده سازی می شوند.

اگر بخش قبلی مطلب ما را نخوانده‏ اید همواره می‏توانید آن را در لینک‏ های زیر بخوانید.

بخش اول آموزش

بخش دوم آموزش

پیام ‏هایی که در صف قرار گرفته ‏اند تا زمانی که گیرنده آن‏ها را بازیابی کند ذخیره می‏ شوند.

Asynchronous

Asynchronous

پیش از بکارگیری RabbitMQ در پروژه ‏ی خود، نیاز است که RabbitMQ Server را بر روی کامپیوتر خود نصب کنیم.

نکته – برای نصب RabbitMQ Server، نیاز است Erlang OTP را نصب کنیم.

بنابراین، در اینجا مراحل نصب برای تنظیم سیستم شما آورده شده است.

راهنمای نصب

مرحله‏ ی اول دانلود Erlang OTP از این  لینک  است.

Asynchronous

Asynchronous

پس از دانلود آن، RabbitMQ Server را از این لینک  دانلود کنید.

حال، قدم اول نصب Erlang OTP است. پس، بر روی فایل EXE جفت کلیک کرده و آن را نصب کنید.

Asynchronous

Asynchronous

تنها بر روی “Next” و “Next” کلیک کنید تا زمانیکه نصب پایان یابد.

Asynchronous

Asynchronous

پس از اینکه نصب کامل شد، RabbitMQ Server را همانطور که در ادامه آمده نصب کنید.

Asynchronous

Asynchronous

دسترسی برای دیواره‏ ی آتش (Firewall) را همانطور که در زیر نشان داده شده، مجاز کنید.

Asynchronous

Asynchronous

پس از مجاز کردن Firewall، تنها بر روی دکمه ‏ی Finish کلیک کرده تا فرآیند نصب را به اتمام برسانید.

Asynchronous

Asynchronous

اکنون، محیط کاری ما آماده است، بیایید بررسی RabbitMQ Server را با بررسی سرویس ‏ها شروع کنیم.

Asynchronous

Asynchronous

حال، نیاز به برخی تنظیمات برای بررسی و مدیریت صف‏ ها داریم.
برای این کار، نیاز است RabbitMQ Web Management را فعال کنیم.

پس، برای فعال کردن آن، به Start رفته و به دنبال خط فرمان sbin بگردید.

Asynchronous

Asynchronous

حال، فرمان زیر را برای فعالسازی Web Management وارد کنید.

  1.  rabbitmq-plugins enable rabbitmq_management

Asynchronous

Asynchronous

(plugin) افزایه ‏ی rabbit_management ترکیبی از افزایه‏ های زیر است.

تمام افزایه‏ های زیر هنگام یکه فرمان فوق را اجرا کنید فعال خواهند شد:

  • mochiweb
  • webmachine
  • rabbitmq_web_dispatch
  • amqp_client
  • rabbitmq_management_agent
  • rabbitmq_management

پس از آن، تنها http://localhost:15672/ را تایپ کنید.

صفحه‏ ی وب RabbitMQ زیر را باز خواهد کرد.

Asynchronous

Asynchronous

بطور پیش‏فرض، RabbitMQ بر روی شماره گذرگاه ۱۵۶۷۲ اجرا می‏شود.

حال، شناسه‏ ی کاربری و رمز عبور پیش‏فرض برای آن “guest” است.

پس از ورود با شناسه ‏ی کاربری و رمز عبور، شما را به درگاه ورودی خواهد برد که در آنجا می‏توانید صف‏ های خود را بررسی کنید، صف‏ هایی را ایجاد کنید، صف‏ ها را حذف کنید و … .

Asynchronous

Asynchronous

حال بیایید ویژوال استودیو را باز کرده، و یک پروژه ‏ی Windows Application ایجاد کنیم.

حال، به کنسول NuGet Package رفته و RabbitMQ Client را نصب کنید.

Asynchronous

Asynchronous

و در اینجا من فرم خود را به شکل زیر طراحی کرده‏ ام.

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 آن را در اینجا مشخص می‏کنیم.

پس اساسا، برای پیوند، ۵ پارامتر نیاز خواهد بود.

  1. آدرس سرویس دهنده
  2.  نام کاربری
  3.  رمز عبور
  4.  ایجاد یک کانال برای ارتباط بین رابط کاربری (UI) و سرویس دهنده (Server).
  5. ایجاد یک صف برای ذخیره ‏ی پیام ‏ها

Asynchronous

Asynchronous

پس از آن بطور ساده پیام‏ ها را از رابط کاربری جمع ‏آوری و به سرویس دهنده ارسال می‏کنیم.

حال، فقط سعی کنید تعدادی پیام بفرستید و بیایید صف را بررسی کنیم.

Asynchronous

Asynchronous

در اینجا، اگر بخواهیم MyQueue را با جفت کلیک بر روی آن بررسی کنیم، شما را به صفحه‏ ای خواهد برد که در آنجا می‏توانید پیام‏ های خود را در صف مشاهده کنید.

Asynchronous

Asynchronous

در اینجا نمای کلی MyQueue آورده شده است.

Asynchronous

Asynchronous

تا به اینجا، پیام را با موفقیت از فرستنده به RabbitMQ Server فرستاده ‏ایم.

در بخش بعدی‏مان، نحوه ‏ی بازیابی این پیام ‏ها را از طریق ایجاد یک سرویس گیرنده (client) خواهیم آموخت.

 


زهره سلطانیان

نوشته‌های مرتبط

دیدگاه‌ها

*
*

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.