دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
کنترل printPreviewDialog در سی شارپ
1404/07/09 -
Storage در SQL Server
1404/07/09 -
کنترل printPreviewControl در سی شارپ
1404/07/08 -
Service Broker در SQL Server
1404/07/08 -
کنترل radioButton در سی شارپ
1404/07/07 -
System View در SQL Server
1404/07/07
Service Broker در SQL Server

Service Broker در SQL Server
Service Broker یکی از قابلیتهای قدرتمند SQL Server است که برای پیادهسازی ارتباط مبتنی بر پیام (Message-based Communication) طراحی شده.
این ویژگی به ما امکان میدهد تا بین دیتابیسها یا سرویسهای مختلف پیامها را بهصورت امن، مطمئن و غیرهمزمان ردوبدل کنیم.
وقتی حجم داده یا پردازش زیاد است، اجرای همزمان همه درخواستها باعث فشار روی سیستم میشود.
اینجاست که سرویس بروکر به کمک میآید و با صفبندی درخواستها (Queue) و اجرای آنها در زمان مناسب، باعث افزایش کارایی میشود.
دلایل اهمیت Service Broker در SQL Server
-
پردازش غیرهمزمان (Asynchronous Processing)
اگر کاربر گزارشی سنگین درخواست دهد، نتیجه را فوری لازم ندارد. درخواست وارد Queue میشود و در پسزمینه اجرا میشود.
-
افزایش مقیاسپذیری (Scalability)
با تقسیم بار بین Queueها و سرویسهای مختلف، SQL Server میتواند هزاران درخواست را مدیریت کند.
-
قابلیت اطمینان (Reliability)
حتی اگر سرور قطع شود، پیامها در Queue باقی میمانند و پس از راهاندازی دوباره پردازش خواهند شد.
-
معماری توزیعشده (Distributed Architecture)
دیتابیسها و برنامهها میتوانند بدون اتصال مستقیم به هم پیام ردوبدل کنند.
اجزای اصلی Service Broker در Sql
-
Message Type
مشخص میکند پیامها چه نوعی هستند و چه قالبی باید داشته باشند (متن ساده، XML، باینری).
مثال:
CREATE MESSAGE TYPE [RequestMessage]
VALIDATION = WELL_FORMED_XML;
-
Contract
تعریف میکند کدام Message Typeها بین سرویسها ردوبدل میشوند و چه کسی مجاز به ارسال آنهاست.
مثال:
CREATE CONTRACT [RequestContract]
(RequestMessage SENT BY INITIATOR);
-
Queue
صفی برای ذخیره پیامها تا زمانی که پردازش شوند.
مثال:
CREATE QUEUE RequestQueue;
-
Service
سرویسی که از Queue پشتیبانی میکند و نقش نقطه ارتباطی بین پیامها را دارد.
مثال:
CREATE SERVICE [RequestService]
ON QUEUE RequestQueue
(RequestContract);
-
Route
در معماری توزیعشده مسیر ارسال پیامها را مشخص میکند.
-
Conversation
ارتباط منطقی بین سرویسها برای تبادل پیامها. هر Conversation یک شناسهی یکتا دارد.
فعالسازی سرویس بروکر (Service Broker)
بهصورت پیشفرض در دیتابیسهای جدید غیرفعال است.
فعالسازی:
ALTER DATABASE MyDatabase SET ENABLE_BROKER;
غیرفعالسازی:
ALTER DATABASE MyDatabase SET DISABLE_BROKER;
ایجاد سرویس بروکر (Service Broker) (مثال عملی)
-
ساخت Message Type
CREATE MESSAGE TYPE [Msg_Text]
VALIDATION = NONE;
-
ساخت Contract
CREATE CONTRACT [Msg_Contract]
([Msg_Text] SENT BY INITIATOR);
-
ساخت Queue
CREATE QUEUE MsgQueue;
-
ساخت Service
CREATE SERVICE [Msg_Service]
ON QUEUE MsgQueue
([Msg_Contract]);
-
ارسال پیام
DECLARE @Handle UNIQUEIDENTIFIER;
BEGIN DIALOG CONVERSATION @Handle
FROM SERVICE [Msg_Service]
TO SERVICE 'Msg_Service'
ON CONTRACT [Msg_Contract]
WITH ENCRYPTION = OFF;
SEND ON CONVERSATION @Handle
MESSAGE TYPE [Msg_Text] (N'Hello from Service Broker!');
-
دریافت پیام
RECEIVE TOP(1) message_type_name, message_body
FROM MsgQueue;
🌟 آیا میخواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟
با دوره آموزشی SQL Server ما، شما میتوانید به راحتی و با روشی عملی، تمام مهارتهای لازم را یاد بگیرید!
این دوره به شما آموزش میدهد که چگونه دادهها را به بهترین شکل مدیریت کنید، گزارشهای قدرتمند بسازید و به تحلیلهای عمیق دست یابید.
با محتوای جذاب و پروژههای واقعی، شما نه تنها تئوری را یاد میگیرید، بلکه تواناییهای عملی خود را نیز تقویت میکنید.
پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشنتر بردارید!
⇐همین حالا شروع کنید و به دنیای دادهها بپیوندید!
حذف Service Broker Objects
-
حذف Service
DROP SERVICE Msg_Service;
-
حذف Queue
DROP QUEUE MsgQueue;
-
حذف Contract
DROP CONTRACT Msg_Contract;
-
حذف Message Type
DROP MESSAGE TYPE Msg_Text;
کاربردهای عملی سرویس بروکر (Service Broker)
-
سیستم بانکداری
در تراکنشهای مالی، درخواست مشتری به Queue ارسال میشود و پردازشها بهترتیب انجام میشوند تا تضاد و دوبارهکاری پیش نیاید.
-
تجارت الکترونیک
سفارش مشتری وارد Queue میشود و بهصورت خودکار پردازش، آمادهسازی و ارسال خواهد شد.
-
گزارشگیری
گزارشهای سنگین در صف اجرا میشوند و نتایج بعداً به کاربر نمایش داده میشود.
-
ارسال اعلان (Notification)
وقتی دادهها تغییر کنند، Service Broker میتواند پیام ارسال کند تا سایر سیستمها مطلع شوند.
مقایسه Service Broker با ابزارهای مشابه
-
MSMQ (Microsoft Message Queuing)
سرویس جدا از SQL Server است؛ اما سرویس بروکر داخل دیتابیس اجرا میشود. -
RabbitMQ / Kafka
ابزارهای مدرنتر برای مدیریت صف پیامها هستند.
اما اگر سیستم شما به SQL Server متکی است، Service Broker ادغام سادهتری دارد. -
Trigger + Table
راه سادهتری برای ثبت تغییرات است، اما فاقد مدیریت پیامهای صف و قابلیت بازیابی است.
مزایای Service Broker در SQL
-
اجرای آسنکرون و غیرهمزمان
-
کاهش بار سرور
-
امنیت بالا با رمزنگاری
-
مدیریت ساده صفها و پیامها
-
اطمینان از تحویل پیام
معایب Service Broker در SQL
-
پیچیدگی پیادهسازی
-
یادگیری دشوار برای مبتدیان
-
مناسب نبودن برای پروژههای کوچک
-
مصرف منابع اضافی در سناریوهای ساده
سناریوهای واقعی استفاده از سرویس بروکر (Service Broker)
-
بانکداری (Banking Systems)
فرض کنید مشتری در دستگاه خودپرداز (ATM) درخواست برداشت وجه ثبت میکند. این عملیات شامل چندین گام است:
-
- بررسی موجودی
- ثبت تراکنش
- بروزرسانی حساب
- چاپ رسید
اگر همه اینها همزمان و در یک تراکنش اجرا شوند، فشار زیادی به سیستم وارد میشود. در عوض میتوان با Service Broker:
-
- درخواست برداشت را بهعنوان یک پیام در Queue ثبت کرد.
- پردازشگر تراکنش (Service) پیامها را بهترتیب اجرا کند.
- اطمینان حاصل شود که حتی در صورت قطعی سیستم، پیامها از بین نمیروند.
-
فروشگاه اینترنتی (E-commerce)
در یک فروشگاه آنلاین، وقتی مشتری سفارشی ثبت میکند، چندین فرآیند مختلف باید اجرا شوند:
-
- ثبت سفارش
- محاسبه موجودی
- پردازش پرداخت
- آمادهسازی برای ارسال
با سرویس بروکر :
-
- سفارش مشتری بهصورت پیام وارد Queue میشود.
- هر سرویس (پرداخت، انبار، ارسال) پیامهای مربوط به خودش را از صف دریافت میکند.
- پردازشها به صورت موازی اما مدیریتشده انجام میشوند.
-
سیستم گزارشگیری (Reporting Systems)
فرض کنید مدیر یک گزارش سنگین از دیتابیس میخواهد. اجرای آن در لحظه ممکن است چند دقیقه طول بکشد. در این شرایط:
-
- درخواست گزارش در Queue ذخیره میشود.
- پردازش گزارش در پسزمینه انجام میشود.
- نتیجه در یک جدول یا فایل ذخیره و بعداً به کاربر تحویل داده میشود.
-
اعلان تغییرات (Change Notifications)
گاهی لازم است برنامهها یا سیستمهای دیگر در صورت تغییر دادهها مطلع شوند. مثلاً:
-
- وقتی سفارشی تغییر وضعیت میدهد، پیام به Queue ارسال شود.
- یک سرویس خارجی (مثلاً سرویس پیامک یا ایمیل) پیام را بخواند و مشتری را مطلع کند.
نکات بهینهسازی
- Queueها را مرتب مانیتور کنید تا پر نشوند.
- برای پیامهای مهم، حتماً از Validation و Encryption استفاده کنید.
- از Index روی Queueها استفاده کنید تا بازیابی سریعتر شود.
- در صورت نیاز از Partitioning برای Queue استفاده کنید.
جمعبندی
Service Broker ابزار قدرتمندی در SQL Server برای مدیریت پیامها و پردازشهای آسنکرون است.
با استفاده از Message Type، Contract، Queue، Service و Route میتوان یک سیستم صف کامل ایجاد کرد.
این قابلیت بهخصوص در سیستمهای بانکی، فروشگاههای آنلاین، پردازش گزارشها و معماریهای توزیعشده کاربرد زیادی دارد.
- ایجاد: شامل تعریف پیام، قرارداد، صف و سرویس
- حذف: باید بهترتیب از سرویس به پیام انجام شود
- کاربرد: پیامرسانی مطمئن، گزارشگیری، اعلان تغییرات، پردازش سفارشها
دوره های مرتبط

آموزش پایگاه داده SqlServer
پایگاه داده Sqlserver یکی از پایگاه داده های مهم برای ذخیره اطلاعات محسوب میشود .