الچوبفرستادنRabbitMQ در الگوی مسیردهی اساساً مانند الگوی منتشر/اشتراک است، با این تفاوت که الگوی منتشر/اشتراک پیامها را به تمام صفهای متصل فرستاده، درحالیکه الگوی مسیردهی پیامها را بر اساس تطابق مسیردهی به صف فرستاده.
از دیدگاه برنامهنویسی خاص، تفاوت الگوی مسیردهی و الگوی منتشر/اشتراک در نوع تبادل استفاده شده واقع میشود. الگوی مسیردهی از نوع مستقیم (Direct) استفاده میکند.
نمودار معماری
توضیح:
- P نماینده تولیدکننده، C1 و C2 نماینده مصرفکنندگان، جعبههای قرمز نماینده صفها و X نماینده تبادل.
- نوع تبادل مستقیم است.
- منطق فرستادن پیام تبادل مستقیم: مقایسه کلید مسیردهی در پیام با کلیدهای مسیردهی مرتبط با همه اتصالات این تبادل. اگر برابر باشند، پیام به صف مرتبط با آن اتصال ارسال میشود.
به عنوان مثال، در نمودار بالا: کلید مسیر Q1 نارنجی است و کلیدهای مسیر Q2 سیاه و سبز هستند. هنگام ارسال پیام، اگر کلید مسیر پیام نارنجی باشد، به صف Q1 فرستاده میشود و اگر کلید مسیر پیام سیاه یا سبز باشد، به صف Q2 فرستاده میشود.
موارد استفاده
الگوی مسیردهی یک گسترش از الگوی منتشر/اشتراک است، بنابراین موارد استفاده شبیه الگوی منتشر/اشتراک هستند، با این تفاوت که قابلیت تنظیم شرایط اشتراک پیام را دارند.
به عنوان مثال: در یک وبسایت تجارتالکترونیک، چهار انبار در شرق چین، جنوب چین، شمال چین و جنوبغرب چین وجود دارد و هر یک از آنها دارای یک مجموعه از سیستمهای مدیریت انبار مستقر هستند. هنگامی که یک کاربر سفارش خرید میدهد، نزدیکترین انبار مسئول ارسال است.
پس از سفارش یک کاربر و ایجاد یک پیام سفارش خرید، ما میخواهیم پیام را به سیستم مدیریت انبار منطقهای مربوط برای پردازش فرستاده، که با استفاده از الگوی مسیردهی میتوان این کار را انجام داد.
اتصالات کلید مسیر صفهای تحویل چهار سیستم مدیریت انبار به شرح زیر است:
- شرق چین = east
- شمال چین = north
- جنوب چین = south
- جنوبغرب چین = west
بعد از سفارش یک کاربر، تعیین کنید که آیا آدرس کاربر متعلق به کدام منطقه است، کلید مسیر را محاسبه کنید، و سپس پیام سفارش را با کلید مسیر ارسال کنید. تبادل مستقیم RabbitMQ آن را به صف مربوط فرستاده میشود.