پارامترها و خط مشی ها

ساخت وبلاگ

در حالی که بخش اعظم پیکربندی برای RabbitMQ در پرونده پیکربندی زندگی می کند ، برخی از موارد با استفاده از یک فایل پیکربندی به خوبی مشبک نمی شوند:

  • اگر آنها نیاز به یکسان بودن در همه گره ها در یک خوشه دارند
  • اگر احتمالاً در زمان اجرا تغییر می کنند

RabbitMQ این پارامترها را می نامد. پارامترها را می توان با استفاده از RabbitMQCTL یا از طریق API HTTP افزونه مدیریت تنظیم کرد. 2 نوع پارامتر وجود دارد: پارامترهای Vhost-Scoped و پارامترهای جهانی. پارامترهای Vhost-Scoped به یک میزبان مجازی گره خورده و از یک نام مؤلفه ، یک نام و یک مقدار تشکیل شده است. پارامترهای جهانی با یک میزبان مجازی خاص گره خورده و از یک نام و ارزش تشکیل شده اند.

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

پارامترهای جهانی و در هر Vhost

همانطور که گفته شد ، پارامترهای Vhost-Scoped و پارامترهای جهانی وجود دارد. نمونه ای از پارامتر Vhost-Scoped یک فدراسیون بالادست است: این یک مؤلفه (فدراسیون-Upstream) را هدف قرار می دهد ، نامی دارد که آن را مشخص می کند ، به یک میزبان مجازی گره خورده است (پیوندهای فدراسیون برخی از منابع این میزبان مجازی را هدف قرار می دهد) ، ومقدار آن پارامترهای اتصال را به یک کارگزار بالادست تعریف می کند.

پارامترهای Vhost-scoped را می توان تنظیم ، پاک و لیست کرد:

 

خرگوش RabbitMqctl set_parameter [-p vhost] Rabbitmqctl clear_parameter [-p vhost] RabbitMqctl List_Parameters [-P Vhost]
HTTP API put / api / parameters / / delete / api / parameters / / / get / api / پارامترها

پارامترهای جهانی نوع دیگری از پارامترها است. نمونه ای از یک پارامتر جهانی نام خوشه است. پارامترهای جهانی را می توان تنظیم ، پاک و لیست کرد:

 

خرگوش RabbitMqctl set_global_parameter RabbitMqctl Clear_global_Parameter RabbitMqctl List_Global_Parameters
HTTP API put/api/global-parameters/name delete/api/global-parameters/name get/api/global-parameters

از آنجا که یک مقدار پارامتر یک سند JSON است ، معمولاً هنگام ایجاد یک خط در خط فرمان با RabbitMQCTL ، باید آن را نقل کنید. در یونیکس معمولاً ساده ترین نقل قول با نقل قول های مجرد ساده تر است و از نقل قول های مضاعف در آن استفاده می کند. در ویندوز باید از هر نقل قول مضاعف فرار کنید. ما به همین دلیل برای UNIX و Windows نمونه هایی می دهیم.

پارامترها در پایگاه داده ای که توسط RabbitMQ استفاده می شود برای تعاریف میزبان های مجازی ، مبادلات ، صف ها ، اتصالات ، کاربران و مجوزها قرار دارد. پارامترها به همراه سایر تعاریف شیء توسط ویژگی صادرات افزونه مدیریت صادر می شوند.

پارامترهای Vhost-Scoped توسط افزونه های فدراسیون و بیل استفاده می شود. پارامترهای جهانی توسط افزونه MQTT استفاده می شود.

سیاست های

چرا سیاست ها وجود دارند

قبل از اینکه توضیح دهیم که سیاست ها چیست و چگونه از آنها استفاده کنیم ، توضیح می دهد که چرا آنها به RabbitMQ معرفی شده اند.

علاوه بر خصوصیات اجباری (به عنوان مثال بادوام یا منحصر به فرد) ، صف ها و صرافی ها در RabbitMQ دارای پارامترهای اختیاری (استدلال) هستند که بعضاً به عنوان X-Argument گفته می شود. این موارد توسط مشتری ها هنگام اعلام صف ها (مبادلات) ارائه می شود و ویژگی های مختلفی مانند محدودیت طول صف یا TTL را کنترل می کنند.

خصوصیات کنترل شده مشتری در برخی از پروتکل های RabbitMQ به طور کلی به خوبی کار می کنند اما می توانند انعطاف پذیر باشند: به روزرسانی مقادیر TTL یا آینه سازی پارامترهای به این ترتیب نیاز به تغییر کاربرد ، بازگرداندن و مجدداً صف (که شامل حذف است). علاوه بر این ، هیچ راهی برای کنترل استدلال های اضافی برای گروه های صف و صرافی وجود ندارد. سیاست هایی برای پرداختن به نقاط درد فوق معرفی شد.

یک خط مشی با یک یا چند صف با نام (با استفاده از یک الگوی بیان منظم) مطابقت دارد و تعریف آن (نقشه آرگومان های اختیاری) را به X-Argument صف های تطبیق می دهد. به عبارت دیگر ، می توان پیکربندی های X را برای صف های مختلف به طور همزمان با یک خط مشی پیکربندی کرد و همه آنها را به طور همزمان با به روز کردن تعریف خط مشی به روز کرد.

در نسخه های مدرن RabbitMQ مجموعه ای از ویژگی هایی که می توانند توسط خط مشی کنترل شوند ، همان مجموعه ویژگی هایی نیست که می تواند توسط استدلال های ارائه شده مشتری کنترل شود.

چگونه سیاست ها کار می کنند

ویژگی های اصلی سیاست ها هستند

  • نام: این می تواند چیزی باشد اما نام های مبتنی بر ASCII بدون فضای توصیه می شود
  • الگوی: یک عبارت معمولی که با یک یا چند نام در صف (مبادله) مطابقت دارد. از هر بیان منظم می توان استفاده کرد.
  • تعریف: مجموعه ای از جفت های کلید/ارزش (فکر کنید یک سند JSON) که به نقشه استدلال های اختیاری صف و تبادل تطبیق تزریق می شود
  • اولویت خط مشی برای تعیین اینکه کدام خط مشی باید در یک صف یا مبادله اعمال شود در صورتی که چندین سیاست با نام آن مطابقت داشته باشد

سیاست ها به طور خودکار در برابر صرافی ها و صف ها مطابقت دارند و به تعیین نحوه رفتار آنها کمک می کنند. هر مبادله یا صف حداکثر یک تطبیق خط مشی خواهد داشت (به ترکیب تعاریف خط مشی زیر مراجعه کنید) ، و هر خط مشی سپس مجموعه ای از جفت های ارزش کلیدی (تعریف سیاست) را به صف های تطبیق (مبادله) تزریق می کند.

سیاست ها فقط می توانند با صف ها ، فقط مبادلات یا هر دو مطابقت داشته باشند. این کار با استفاده از پرچم اعمال شده در هنگام ایجاد یک خط مشی کنترل می شود.

سیاست ها می توانند در هر زمان تغییر کنند. هنگامی که یک تعریف خط مشی به روز می شود ، تأثیر آن در تطبیق مبادلات و صف ها دوباره استفاده می شود. معمولاً بلافاصله اتفاق می افتد اما برای صف های بسیار شلوغ می تواند کمی وقت بگذارد (مثلاً چند ثانیه).

هر بار که مبادله یا صف ایجاد می شود ، سیاست ها همسان و اعمال می شوند ، نه فقط در هنگام ایجاد این سیاست.

از خط مشی ها می توان برای پیکربندی استفاده کرد

  • فدراسیون
  • مبادلات جایگزین
  • حروف مرده ،
  • TTL های هر صف
  • حد مجاز طول صف

و سایر ویژگی ها

نمونه ای از تعریف یک سیاست به نظر می رسد:

RabbitMqctl set_policy federate-me  "^فدرال ."''  --priority 1 -apply-to تبادل
RabbitMqctl. bat set_policy federate-me ^ " ^ فدرال .""" " ^-Priority 1 ^-Apply-to Exchanges
PUT /api/policies/%2f/federate-me , "priority": 1, "apply-to": "exchanges">
  • Navigate to Admin> Policies>اضافه کردن / به روزرسانی یک خط مشی.
  • "Federate-Me" را در کنار نام وارد کنید ، "^فدرال ."در کنار الگوی ، و "مبادلات" را در کنار اعمال انتخاب کنید.
  • "فدراسیون-UPStream-Set" = "All" را در خط اول کنار خط مشی وارد کنید.
  • روی افزودن خط مشی کلیک کنید.

این با ارزش "همه" با کلید "فدراسیون-بالا-مجموعه" برای همه مبادلات با نام هایی که با "فدرال" شروع می شوند ، مطابقت دارد.، در میزبان مجازی "/".

آرگومان "الگوی" یک عبارت معمولی است که برای مطابقت با نام های تبادل یا صف استفاده می شود.

در صورتی که بیش از یک سیاست بتواند با یک مبادله یا صف مشخص مطابقت داشته باشد ، این سیاست با بیشترین اولویت اعمال می شود.

استدلال "اعمال-به" می تواند "مبادله" ، "صف" یا "همه" باشد. تنظیمات "اعمال به" و "اولویت" اختیاری است ، در این صورت پیش فرض ها به ترتیب "همه" و "0" هستند.

اولویت های سیاست

الگوهای خط مشی با نام های مبادله و صف مطابقت دارند تا تعیین کنند که چه سیاستی (در صورت وجود) باید مجموعه ای از جفت های ارزش کلیدی (تعریف آن خط مشی) را به استدلال های اختیاری صف های تطبیق (مبادلات) تزریق کند.

حداکثر یک سیاست با یک صف یا مبادله مطابقت دارد. از آنجا که چندین سیاست می تواند با یک نام واحد مطابقت داشته باشد ، مکانیسم برای حل چنین درگیری های سیاست لازم است. این مکانیسم اولویت های سیاست نامیده می شود. هر سیاستی دارای اولویت عددی در ارتباط با آن است. این اولویت را می توان هنگام اعلام یک سیاست مشخص کرد. اگر به صراحت ارائه نشده باشد ، از اولویت 1 استفاده می شود.

سپس سیاست های تطبیق با اولویت طبقه بندی می شوند و برنامه ای با بالاترین اولویت عملی خواهد شد.

هنگامی که چندین سیاست با یک موجودیت مطابقت داشته باشد و همه آنها اولویت های مساوی دارند ، یک مؤثر به طور نامحدود انتخاب می شود. با توجه به آنچه در اولویت ها از سیاست های مختلف استفاده می شود ، باید از چنین مواردی جلوگیری شود.

ترکیب تعاریف سیاست

در بعضی موارد ممکن است بخواهیم بیش از یک تعریف سیاست را برای یک منبع اعمال کنیم. به عنوان مثال ممکن است برای فدرال بودن به یک صف نیاز داشته باشیم و پیام TTL داشته باشیم. حداکثر یک خط مشی در هر زمان معین برای یک منبع اعمال می شود ، اما می توانیم تعاریف متعدد را در آن خط مشی اعمال کنیم.

تعریف خط مشی فدراسیون نیاز به یک مجموعه بالادست دارد تا مشخص شود ، بنابراین ما در تعریف خود به کلید مجموعه فدراسیون-بالادست نیاز داریم. از طرف دیگر برای تعریف برخی از صف ها به عنوان قابلیت TTL ، ما به کلید کلیدهای مربوط به TTL نیاز داریم که برای این خط مشی نیز تعریف شود. تعریف سیاست فقط یک شیء JSON است و می تواند چندین کلید در همان تعریف سیاست داشته باشد.

در اینجا یک مثال آورده شده است:

RabbitMqctl set_policy ttl-fed  "^tf ."''  --priority 1 -apply-to queeues
RabbitMqctl set_policy ttl-fed ^ " ^ tf .""" ^ --پرییت 1 ^-برنامه
PUT /api/policies/%2f/ttl-fed , "priority": 1, "apply-to": "queues">
  • Navigate to Admin> Policies>اضافه کردن / به روزرسانی یک خط مشی.
  • "TTL-Fed" را در کنار نام ، "^tf " وارد کنید. در کنار الگوی ، و "صف ها" را در کنار درخواست انتخاب کنید.
  • "فدراسیون-UPStream-Set" = "All" را در خط اول کنار خط مشی وارد کنید.
  • "HA-mode" = "دقیقاً" و "ha-params" = 2 را در خطوط شکل زیر وارد کنید.
  • روی افزودن خط مشی کلیک کنید.

با انجام این کار تمام صف های مطابق با الگوی "^tf "."فدراسیون-Upstream-Set" و تعاریف سیاست برای آنها اعمال می شود.

خط مشی اپراتور

تفاوت از سیاست های منظم

بعضی اوقات لازم است که اپراتور سیاست های خاصی را اجرا کند. به عنوان مثال ، ممکن است مطلوب باشد که صف TTL را مجبور کند اما هنوز هم به کاربران دیگر اجازه می دهد سیاست ها را مدیریت کنند. سیاست های اپراتور امکان پذیر است.

خط مشی های اپراتور بسیار شبیه به برنامه های معمولی است اما تعاریف آنها به گونه ای متفاوت استفاده می شود. آنها قبل از استفاده از نتیجه در صف های تطبیق ، با تعاریف منظم سیاست ادغام می شوند.

از آنجا که سیاست های اپراتور می توانند به طور غیر منتظره ای ویژگی های صف را تغییر دهند و به نوبه خود فرضیات کاربردی و معانی ، آنها فقط به چند استدلال محدود می شوند:

  • منقضی شدن
  • پیام TTL
  • بیشترین طول
  • حداکثر بایت

استدلال های فوق همه عددی است. دلیل آن در بخش زیر توضیح داده شده است.

حل و فصل درگیری با سیاست های منظم

یک خط مشی اپراتور و یک برنامه منظم می توانند در تعاریف خود دارای همان کلیدها باشند. هنگامی که این اتفاق می افتد ، مقدار کوچکتر به عنوان مؤثر انتخاب می شود. به عنوان مثال ، اگر یک تعریف خط مشی اپراتور تطبیق حداکثر طول را به 50 تبدیل کند و یک تعریف خط مشی منظم مطابق با مقدار 100 است ، از مقدار 50 استفاده می شود. با این حال ، اگر ارزش سیاست منظم 20 بود ، از آن استفاده می شد. بنابراین ، سیاست های اپراتور فقط ارزشهای منظم سیاست را بازنویسی نمی کنند. آنها محدودیت ها را اجرا می کنند اما سعی می کنند در صورت امکان سیاست های ارائه شده توسط کاربر را نادیده نگیرند.

تعریف سیاست های اپراتور

خط مشی های اپراتور به روشی بسیار شبیه به سیاست های معمولی (کاربر) تعریف شده است. هنگامی که از RabbitMQCTL استفاده می شود ، نام فرمان به جای Set_policy set_operator_policy است. در API HTTP ،/API/خط مشی ها/در مسیر درخواست تبدیل می شود/API/اپراتور-پولی/:

RabbitMqctl set_operator_policy transient-que-ttl  "^amq ."''  --priority 1 -apply-to queeues
RabbitMqctl. bat set_operator_policy transient-que-ttl ^ " ^ amq .""" ^ --پرییت 1 ^-برنامه
PUT /api/operator-policies/%2f/transient-queue-ttl , "priority": 1, "apply-to": "queues">
  • Navigate to Admin> Policies>یک خط مشی اپراتور را اضافه یا به روز کنید.
  • "Transient-Queue-TTL" را در کنار نام ، "^AMQ " وارد کنید. در کنار الگوی ، و "صف ها" را در کنار درخواست انتخاب کنید.
  • "منقضی" = 1800000 را در خط اول کنار خط مشی وارد کنید.
  • روی افزودن خط مشی کلیک کنید.

کمک و ارائه بازخورد

اگر در مورد محتوای این راهنما یا هر موضوع دیگری که مربوط به RabbitMQ است ، سؤالی دارید ، دریغ نکنید که از آنها در لیست پستی RabbitMQ سؤال کنید.

به ما در بهبود اسناد کمک کنید

اگر می خواهید به پیشرفت در سایت کمک کنید ، منبع آن در GitHub موجود است. به سادگی مخزن را چنگ بزنید و یک درخواست کشش ارسال کنید. متشکرم!

در این بخش

  • مستندات سرور
    • پیکربندی
      • مکان های پرونده
      • ورود به سیستم
      • ماندگاری
      • شبکه
      • پارامترها و خط مشی ها
سیگنال های تجاری...
ما را در سایت سیگنال های تجاری دنبال می کنید

برچسب : نویسنده : عبدالله بوتیمار بازدید : <-PostHit-> تاريخ : يکشنبه 11 تير 1402 ساعت: 18:06