Exchange - veguherîner an xala danûstendinê. Peyam jê re tên şandin. Exchangepeyamê belav dike di yek an çend rêzan de. Ew rêgezên mesajên ji bo dorê li ser bingeha girêdanên çêkirî (bindings) di navbera wê û dorê de.
Exchange nabe pêvajoya Erlang. Ji ber sedemên mezinbûnê exchange di databasa çêkirî de rêzek e (girêdana modulê bi koda ku mantiqa rêvekirinê lê ye) ye. mnesia. 1 hezar veguherîner dê tenê 1 MB bîranînê bixwin.
RabbitMQ. Beş 4. Mijûlbûna bi peyam û çarçoweyan re
RabbitMQ. Beş 5: Performansa şandin û vexwarina peyaman
RabbitMQ. Beş 6. Pêşniyara Federasyona û Modulên Shovel
RabbitMQ. Beş 7. Agahiyên li ser Girêdana û Chanel
RabbitMQ. Beş 8. RabbitMQ li .NET
RabbitMQ. Beş 9. Şopandin
Exchange Direct
Direct exchange - dema ku hewce bike tê bikaranîn peyamek ji rêzikên taybetî re bişînin. Peyam bi taybetmendiyek ji veguherîner re tê weşandin mifteya rêvekirinê û dikeve nav hemî rêzikên ku bi vê veguhezerê re bi mifteyek rêvekirinê ya wekhev ve girêdayî ne. Mifteya rêvekirinê rêzek e. Lihevkirin bi kar tê kirin kontrolkirina rêzikên ji bo wekheviyê.
Nûneriya grafîkî ya herikîna peyamê:
В rabbitmq têgehek heye veguherînerê xwerû. ev direct exchange bê nav. Ger guhezkara xwerû were bikar anîn, wê hingê dê peyam berbi rêzek bi navek wekhev ve were rêve kirin mifteya rêvekirina peyamê.
Guhertina Mijara
Topic exchange - wekhev direct exchange bi berawirdkirina mifteya rêvekirinê rêça bijartî dike. Lê, di vê rewşê de, kilît tê dayîn bi şablonê. Dema ku şablonek çêbikin, bikar bînin 0 an jî bêtir peyvan (herf AZ и az û hejmaran 0-9), bi xalek, û hem jî bi sembolan veqetandî * и #.
* - dikare bi tam li şûna 1 gotina
# - dikare bi şûna 0 an jî bêtir peyvan
Nûneriya grafîkî ya herikîna peyamê:
Ji versiyonê dest pê dike RabbitMQ 2.4.0 algorîtmaya rêvekirinê ji bo topic exchange dest bi xebatê kir heta 145 caran zûtir. Bi pêkanîna nêzîkatiyê ev yek bi dest xistin pêkanîna ceribandinê, ku tê wateya temsîlkirina şablonan wekî avahiyek darê. Ji bo nimûne şablonan a.b.c, a.*.b.c, a.#.c и b.b.c dê bi avahiyek jêrîn were temsîl kirin:
Lihevhatina nimûneyê ji kok dest pê dike û ji serî ber bi jêr ve tê lêgerîn.
Features:
bikaranîna vê veguherîner dikare bibe hilbijartinek baş e ji bo pêşkeftina sepana pêşerojê ya gengaz, ji ber şablon her gav dikarin bêne xweş kirin da ku peyam bi heman rengî were weşandin direct exchange an fanout exchange
şablonên ku bikar tînin *pir zûtirji şablonên ku bikar tînin #.
topic exchange hêdîtir direct exchange
Fanout Exchange
Fanout exchange - hemî peyam ji hemî rêzan re têne şandin tevî ku di peyamê de mifteyek rêvekirinê were diyar kirin.
Features:
RabbitMQbi bişkok û şablonan rêvekirinê naxebite ku bandorek erênî li ser performansê dike. Ev zûtirîn e exchange;
Pêdivî ye ku hemî xerîdar karibin hemî peyaman pêvajoyê bikin;
Nûneriya grafîkî ya herikîna peyamê:
Headers Exchange
Headers exchange - li ser bingeha berhevdana cotên taybetmendiyên (kilît, nirx) peyaman rê dide rêzên têkildar headers taybetmendiya peyamê girêdan û wekhev. headers ye Dictionary<ключ, значение>.
Ger hûn kilîtek taybetî li ferhengê zêde bikin x-match bi wate any, wê gavê heke lihevhatinek qismî ya (kilît, nirx) cotan hebe, peyam tê rêkirin. Ev tevger dişibe operatorê or.
var bindingArguments = new Dictinary<String, Object>();
bindingArguments.add("x-match", "any");
Bişkojka xwerû x-match nirxek dihewîne all. Ev tê vê wateyê ku dema ku cotên (kilît, nirx) bi tevahî li hev bikin, peyam tê rêve kirin. Ev tevger mîna operatorê ye and.
Nûneriya grafîkî ya herikîna peyamê:
Features:
nermbûna zêde
sermaya hejmartinê ya zêde. Hemî cotên (key, nirx) taybetmendiyê headers Berî ku nirxên rêveçûna peyamê were hesibandin divê li gorî navê mifteyê were rêz kirin. Ji cureyên din ên danûstendinê hêdîtir.
Berhevkar Hashing Exchange
Ev veguherîner e girêdan и ne ava kirin в RabbitMQ.
Consistent-hashing exchange (hevguhertina hevgirtî) - dema ku gelek rêz hene ku wergirên potansiyel ên peyamê ne û gava ku hûn hewce ne ku hevsengiyê di navbera wan de bar bikin tê bikar anîn. Peyam ji hêla giraniyê ve bi rêzê ve girêdayî ye (nirxek rêzika şertî ji 0 - n).
Giraniya hevwate ya rêzan - destnîşan dike ku her rêz dê wergire li ser heman mîqdarê peyaman (her peyam dê tenê di yek rêzê de were danîn). Garantiyek bêkêmasî ya belavkirina yekgirtî ya peyaman tune.
Nûneriya grafîkî ya herikîna peyamê:
Hash li ser bingeha mifteya rêvekirinê an taybetmendiyê tê hesibandin headers messages. Ger hemî peyamên hatine weşandin bişkojkên rêvekirinê yên cûda hebûn, an headers, wê demê belavkirin dê bi giraniyê pêk were. Wekî din, mifteya rêwîtiyê dê were bikar anîn an headers.
Pêdivî ye ku gava ku pêdivî ye ku berbi xerîdar ji çareseriyek bi pir xerîdarên ku heman rêzê bikar tînin bilindtir bibe alîkar.
Kombînasyona veguherîneran (E2E)
Tevgera hemî danûstendinan bi karanîna ragihandinê dikare were hev kirin Exchange-to-Exchange (tevlihevkirina pevguherkaran di nav taybetmendiyê de tune AMQP. Ev dirêjkirina protokolê ji aliyekî ve ye RabbitMQ).
Nûneriya grafîkî ya herikîna peyamê:
Li ser hesabê E2E em dikarin veavakirina berbelavkirî ya rast ku hem hewcedariyên heyî û hem jî yên mezinbûyî pêk tîne bibînin.
Danûstandinek çêbikin
Veguhezkar bi karanîna hevdemek tête çêkirin RPC daxwaza pêşkêşkarê. Daxwaz bi karanîna rêbazê tête kirin Exchange.Declare, bi pîvanan tê gotin:
exchange - Navê veguherînerê ku em dixwazin biafirînin. Nav divê yekta be
type - type of exchanger
durable - heke were saz kirin true, paşê exchange dê mayînde be. Ew ê li ser dîskê were hilanîn û dê bikaribe ji nûve destpêkirina server / broker sax bimîne. Ger nirx false, paşê exchange demkî ye û dema ku server/broker ji nû ve were destpêkirin dê were rakirin
autoDelete - jêbirina otomatîk. Exchange dê were jêbirin dema ku hemî rêzikên ku pê re têkildar têne jêbirin
arguments argumanên vebijarkî ne. Pir caran, bi argumanên set alternative exchange (veguherîner alternatîf). Ger peyamek nikaribe di riya orîjînal re derbas bibe, ew dikare ji danûstendinek alternatîf re were şandin ku li ser rêyek cûda were rêve kirin.
Ger afirandin exchangedibe, wê hingê server dê xerîdar hemdemek bişîne RPC bersîva Exchange.DeclareOk. Ger afirandin nabe (li ser daxwazê red bû Exchange.Declare), wê hingê kanal dê bigire server fermanek asynkron bikar tîne Channel.Close û xerîdar dê îstîsnayek bistîne OperationInterruptedException, ku dê koda xeletiyê û danasîna wê hebe.
Berî şandinê divê veguherînerek were afirandin. Ger hûn peyamek ji hin guhezkerek neheyî re diweşînin - RabbitMQ bêdeng jê rake.
GUI-ya Exchange biafirînin
Biçe panela rêveberiyê RabbitMQ bin bikarhêner guest (navê bikarhêner: guest û şîfre: guest). Ji kerema xwe not bikin ku bikarhêner guest tenê dikare ji localhost ve girêdayî ye. Niha em herin tabê Exchanges û li ser bitikîne Add a new exchange. Taybetmendiyan dagirin:
Piraniya taybetmendiyên li jor hatine diyar kirin. Li vir em destnîşan dikin ku heke em destnîşan bikin Internal, hingê veguherandin tenê dikare ji bo bikar bînin E2E. Producer dê nikaribin ji danûstendinek weha re peyaman bişînin.
encamê
Dema ku pergalek pêşve dibe, danasîna topolojiyê hêsan e rêkirin grafikek bi kar tînin. Lê berî ku hûn dest bi çêkirina grafikekê bikin, hêja ye ku rêyên bi seyrûsefera zêde ronî bikin, ji ber wan hewce dike hilbera bilind (birêvebirinî). Piştre, hûn dikarin trafîkê dabeş bikin. Û paşê dest bi avakirina.
Ger di grafiya çêkirî de hebe set dawî bişkokên rêvekirinê, wê hingê, hêja ye ku li çend kesan bigerin fanout exchange, ku 1:1 bi mifteya rêvekirinê ve girêdayî ne. Bîr bînin bîra xwe fanout exchange ya herî bilez.
Ger hejmara rêyên ber bi bêdawîtiyê ve meyla dike, hêjayî balê ye topic exchange an jî, heke şablon ne hewce ye, wê hingê hûn dikarin hilbijêrin direct exchnge, ji ber ew zûtir e topic exchange.
Kombînasyona cûrbecûr exchange divê ji we re bibe alîkar ku hûn yê rast bibînin. veavakirina scalable, ku hem hewcedariyên pergalê yên heyî û hem jî yên mezin pêk tîne.
Hejmara exchange û rêz divê li gorî hejmara rêgezan hindik be.
Di gotara din de, em ê dest pê bikin ku di derheqê Queues û Bindings de bêtir fêm bikin.