Увод у РаббитМК, посредника који се бави порукама

Увод у РаббитМК, посредник порука, АМКП модел и још много тога.

У дистрибуираним системима, комуникација између различитих апликација игра важну улогу. Ефикасно преношење порука између апликација увек је било пресудна одлука у дизајну система. Једно од елегантних решења за прослеђивање порука по дистрибуираном систему је посредник порука.

У дистрибуираним системима, комуникација између различитих апликација игра важну улогу. Ефикасно преношење порука између апликација увек је било пресудна одлука у дизајну система. Једно од елегантних решења за прослеђивање порука по дистрибуираном систему је посредник порука.

Доводе до раздвајања између апликација и пружају ефикасан начин комуникације. Код посредника порука, за комуникацију апликација не захтева претходно знање својих прималаца.

Међутим, шта је РаббтиМК? Како се РаббитМК уклапа у ову слику? Такође, шта је АМКП?

На крају овог чланка моћи ћемо да одговоримо на ова питања. Такође сам додао неколико анимација како бисте могли да визуализујете РаббитМК концепте.

Па да ли сте узбуђени? Ја сам! Ако сте икада имали потешкоћа у разумевању посредника порука, као што сам ја имао, онда је овај чланак право место за почетак вашег путовања. Остани са мном ?

Мессаге Брокер

Генерално, брокер је особа која олакшава трговину између купца и продавца. Пример може бити агент за промет некретнинама или берзански посредник.

Слично томе, ако желимо да тргујемо порукама између две дистрибуиране софтверске компоненте, потребан нам је посредник. Овај посредник познат је као посредник порука. Прима долазне поруке од пошиљаоца и шаље их примаоцу. На овај начин пошиљалац и прималац могу бити потпуно изоловани.

Друга аналогија за посредника порука може бити пошта (видети слику 1). Узмимо сценарио у којем ћете послати писмо свом рођаку који живи у другом граду. По овој аналогији, ви сте произвођач, ваш рођак је потрошач, а пошта посредник порука.

РаббитМК као посредник порука

Сада знамо да је сврха посредника порука усмеравање порука од произвођача до потрошача. Хајде да испитамо једног таквог посредника порука - РаббитМК. То је један од најопсежнијих посредника порука ових дана.

Начин на који РаббитМК усмерава поруке зависи од протокола за размену порука који примењује. РаббитМК подржава више протокола за размену порука. Међутим, оно што нас занима је АМКП. То је скраћеница за Адванцед Мессаге Куеуинг Протоцол.

Дакле, без икаквог додатног одлагања, хајде да детаљније погледамо модел протокола АМКП.

Напредни протокол чекања порука

Концептуални модел АМКП-а је прилично једноставан и јасан. Има три целине:

  1. Ред чекања
  2. Везивање
  3. Размена

Када издавач пошаље поруку РаббитМК-у, прво долази на размену. Берза затим дистрибуира копије ових порука у различито повезане редове. Напокон, потрошачи добијају ове поруке.

Поруку сматрајте делом података. То је нужно пакет са корисним оптерећењем и неким мета-подацима. Корисни терет садржи пуне податке, док су мета-подаци својства која користи РаббитМК.

Слика 2 приказује графички приказ АМКП модела.

АМКП је програмабилни протокол. Програмери могу да користе библиотеке за конфигурисање ентитета (размена, везивање и ред чекања) према сопственим потребама. Администратор РаббитМК нема улогу у подешавању ових ентитета.

Доступно је пуно библиотека за рад са РаббитМК. Можете бирати између Нодејс, Питхон, .Нет, Јава и многих других.

Редови

Ови редови су некако слични редовима из наших класа структуре података. РаббитМК редови такође следе ФИФО - методологију „Прво-прво-прво“. Ред је место на којем РаббитМК чува поруке / податке.

Програмери могу да конфигуришу редове путем доступних програмских библиотека. Ред можете учинити трајним (са Durabilityсвојством) да бисте заштитили своје податке у случају да брокер падне. Можете и да наведете име (са Nameсвојством) за ред. Поред Nameи Durability, ред има још неколико својстава као што су аутоматско брисање, ексклузивно и аргументи.

Пре него што кренете даље, важно је схватити ко је директни потрошач ових редова. Штавише, на колико начина корисник може да троши поруке из реда?

Потрошачи

Потрошачи су ти који ће користити поруке ускладиштене у реду. Могуће је истовремено повезати више потрошача у ред чекања. Потрошачи могу или извући поруку из реда удруживањем или редови чак могу послати поруку разним потрошачима који повезују.

Везови

Везови су правила која ред дефинише док успоставља везу са разменом. Можете имати ред повезан на више централа. Сваки ред је такође повезан са подразумеваном разменом. Размена ће користити ове везе за усмеравање порука у редове.

Размене и њихове врсте

Екцханге је пролаз за РаббитМК за ваше поруке. Удаљеност коју порука мора прећи унутар РаббитМК-а зависи од врсте размене. Првенствено постоје четири врсте.

  • Директан
  • Фаноут
  • Тема
  • Заглавље

Директан

Име све објашњава! - Директна размена испоручује поруку директно на редове који испуњавају доњи услов:

Routing key == Binding key 

Кључ за усмеравање је атрибут поруке. С друге стране, кључ за везивање је нешто што одредите приликом креирања везивања између реда и размене.

Слика 3 је визуелно објашњење како поруке теку док користе директну размену.

Порука потиче од произвођача (зелени круг) са кључем за усмеравање - img.resize. Једном када дође до размене (наранџасти круг), размена ће покушати да пронађе све редове са кључем за везивање - img.resize. У случају подударања, порука се пребацује у све подударне редове (у нашем случају промените величину). Ако није пронађено подударање, порука се може послати назад произвођачу или чак одбацити. Имамо среће да смо пронашли подударање у нашем примеру?

[гиф слика]

Једном када порука стигне до жељеног реда (у нашем случају промените величину), она се дистрибуира на округли начин свим повезаним потрошачима (ресизер.1 / ресизер.2 у нашем случају).

Дистрибуцијом порука на округли начин, РаббитМК осигурава да су поруке уравнотежене са оптерећењем.

Сигурно сте приметили да ред са именом цроп не прима никакве поруке. Јер је кључ за усмеравање у овом примеру img.resize. Да бисмо послали поруке у овај ред, морамо да пошаљемо поруке са кључем за усмеравање који би одговарао кључу за везивање (рецимо img.crop на пример).

Фаноут

Размена Фаноут-а игнорише кључеве за усмеравање и дистрибуира поруку свим повезаним редовима. Није ни чудо што се зове Фаноут (упуштање порука у све повезане редове!?).

Један од случајева употребе ове врсте размене је емитовање порука.

Имајте на уму да ће РаббитМК и даље радити кругове ако постоји више од једног потрошача у реду.

Тема

Размена тема усмерава поруку усклађивањем кључа за усмеравање са узорком у кључу за повезивање.

Routing key == Pattern in binding key.

РаббитМК користи два знака за замену за подударање узорака *и #. Користите а *за подударање 1 речи и а #за 0 или више речи.

Слика 5 је визуелни приказ размене тема. Поруке са кључем за усмеравање - logs.errorподудараће се са узорцима - logs.errorи logs.*. Стога ће ове поруке завршити у редовима - only error и all logs.

Док ће се за произвођача у доњем левом углу поруке са logs.successкључем за усмеравање - подударати са обрасцима кључа за повезивање #success и logs.*. Стога ће ове поруке завршити у редовима - all logsи only success.

[гиф]

Ова врста размене има широк спектар примена. Може се користити у обрасцу објавити-претплатити, дистрибуирајући релевантне податке радним процесима по жељи и још много тога.

Заглавље

Заглавље је посебна врста размене која рутира поруке на основу кључева присутних у заглављу поруке. Прегледава атрибут кључа за усмеравање поруке.

Приликом креирања веза за размену заглавља, могуће је везати ред који одговара више од једног заглавља. У таквом случају, РаббитМК треба да зна од произвођача да ли треба да се подудара са свим или било којим од ових кључева.

Продуцент / апликација то може учинити давањем додатне заставице која се назива „к-матцх“. 'к-матцх' може имати anyили allвредности. Први налаже да се подудара само једна вредност, док други налаже да се морају подударати све.

Потврда поруке

Једном када порука стигне на одредиште, посредник би требало да је избрише из реда. Неопходно је јер може доћи до преливања реда ако се непрестано гомилају поруке.

Пре брисања било које поруке, брокер мора да има потврду о испоруци. Постоје два могућа начина за потврду испоруке поруке.

  1. Аутоматско потврђивање: Једном када потрошач прими поруку
  2. Експлицитно признање: Када потрошач врати потврду

У већини случајева користи се изричито потврђивање, јер се осигурава да је потрошач конзумирао поруку без преусмеравања.

Шта је следеће

РаббитМК је врло зрео и користан производ. Овај чланак је само увод у РаббитМК на високом нивоу. Поједноставио сам концепте да бих вам пружио референтну тачку за даље кретање. Посетите веб страницу РаббитМК за сложеније теме.

Надам се да вам се свиђа чланак. Не заборавите да пљескате (или аплаудирате?). Пратите да бисте прочитали моје предстојеће приче. До следећег пута, задржите редове чекања.