Exchange - exchanger o exchange point. Ang mga mensahe gipadala niini. Exchangenag-apod-apod sa mensahe sa usa o daghang pila. Siya rota sa mga mensahe ngadto sa usa ka pila base sa gibuhat nga mga link (bindings) taliwala niini ug sa pila.
Exchange dili Erlang proseso. Alang sa mga hinungdan sa scalability exchange usa ka hilo (link sa module nga adunay code diin nahimutang ang routing logic) sa built-in nga database mnesia. Ang 1 ka libo nga mga exchangers mogamit lamang sa 1MB nga memorya.
RabbitMQ. Bahin 3. Pagsabot sa mga Pila ug Pagbugkos
RabbitMQ. Bahin 4. Pag-atubang sa unsa ang mga mensahe ug mga bayanan
RabbitMQ. Bahin 5: Pagmantala ug Pagkonsumo sa Pagganap sa Mensahe
RabbitMQ. Bahin 6. Kinatibuk-ang Pagtan-aw sa Federation ug Mga Module sa Pala
RabbitMQ. Bahin 7. Mga Detalye bahin sa Koneksyon ug Chanel
RabbitMQ. Bahin 8. RabbitMQ sa .NET
RabbitMQ. Bahin 9. Pagmonitor
Direktang Pagbayloay
Direct exchange - gigamit kung gikinahanglan paghatud ug mensahe sa piho nga mga pila. Ang mensahe gimantala ngadto sa exchanger uban sa usa ka piho nga routing key ug mosulod sa tanang mga pila nga nalangkit niini nga exchanger nga adunay susama nga routing key. Ang routing key kay usa ka string. Ang pagpares gihimo gamit pagsusi sa mga kuwerdas alang sa pagkaparehas.
Ang graphical nga representasyon sa dagan sa mensahe:
В rabbitmq adunay usa ka konsepto default exchanger. Kini direct exchange walay pangalan. Kung gigamit ang default exchanger, ang mensahe madala sa pila nga adunay ngalan nga parehas sa yawe sa pag-ruta sa mensahe.
Pagbayloay sa Hilisgutan
Topic exchange – susama direct exchange makapahimo sa pinili nga routing pinaagi sa pagtandi sa routing key. Apan, sa niini nga kaso, ang yawe gihatag pinaagi sa template. Sa paghimo og template, gamita 0 o daghang mga pulong (mga letra AZ и az ug mga numero 0-9), gibulag sa usa ka tulbok, ingon man mga simbolo * и #.
* - mahimong pulihan sa eksakto 1 ang pulong
# - mahimong pulihan sa 0 o dugang nga mga pulong
Ang graphical nga representasyon sa dagan sa mensahe:
Pagsugod sa bersyon RabbitMQ 2.4.0 routing algorithm alang sa topic exchange nagsugod sa pagtrabaho hangtod 145 mga panahon nga mas paspas. Nakab-ot nila kini pinaagi sa pagpatuman sa pamaagi pagsulay sa pagpatuman, nga nagpasabot sa representasyon sa mga templates isip istruktura sa kahoy. Pananglitan mga templates a.b.c, a.*.b.c, a.#.c и b.b.c irepresentar sa mosunod nga istruktura:
Ang pagpares sa pattern gipangita sugod sa gamut ug gikan sa taas hangtod sa ubos.
Features:
ang paggamit niini nga exchanger mahimong usa ka maayong pagpili alang sa posible nga pag-uswag sa umaabot nga app, kay Ang mga templates mahimong ipasibo kanunay aron ang mensahe mamantala nga parehas direct exchange o fanout exchange
mga templates nga gigamit *labi ka tulinkay sa mga templates nga gigamit #.
topic exchange hinay direct exchange
Pagbinayloay sa Fanout
Fanout exchange - ang tanan nga mga mensahe gihatag sa tanan nga mga pila bisan kung ang usa ka routing key gipiho sa mensahe.
Features:
RabbitMQdili molihok sa mga yawe sa ruta ug mga template nga adunay positibo nga epekto sa pasundayag. Kini ang labing paspas exchange;
ang tanan nga mga konsumedor kinahanglan nga makahimo sa pagproseso sa tanan nga mga mensahe;
Ang graphical nga representasyon sa dagan sa mensahe:
Pagbaylo sa mga ulohan
Headers exchange - nagdirekta sa mga mensahe ngadto sa may kalabutan nga mga pila base sa pagtandi sa mga pares sa (key, value) nga mga kabtangan headers nagbugkos ug susama nga kabtangan sa mensahe. headers mao ang usa ka Dictionary<ключ, значение>.
Kung magdugang ka usa ka espesyal nga yawe sa diksyonaryo x-match uban sa kahulogan any, dayon ang mensahe madala kung ang mga pares (key, value) partially match. Kini nga kinaiya susama sa operator or.
var bindingArguments = new Dictinary<String, Object>();
bindingArguments.add("x-match", "any");
Default nga yawe x-match adunay usa ka bili all. Kini nagpasabot nga ang mensahe madala kung ang mga pares (key, value) hingpit nga magkatugma. Kini nga kinaiya susama sa operator and.
Ang graphical nga representasyon sa dagan sa mensahe:
Features:
dugang nga pagka-flexible
dugang nga computational overhead. Tanang pares (key, value) sa attribute headers kinahanglan ihan-ay sa yawe nga ngalan sa dili pa kwentahon ang mga kantidad sa pag-ruta sa mensahe. Mas hinay kay sa ubang mga matang sa pagbaylo.
Kanunay nga Hashing Exchange
Kini nga exchanger mao ang plugin и dili built in в RabbitMQ.
Consistent-hashing exchange (hash-consistent exchange) - gigamit kung adunay daghang mga pila nga potensyal nga makadawat sa usa ka mensahe ug kung kinahanglan nimo nga i-load ang balanse tali kanila. Ang mensahe nalangkit sa pila pinaagi sa gibug-aton (usa ka conditional string value gikan sa 0 - n).
Katumbas nga gibug-aton sa mga pila - nagpakita nga ang matag pila makadawat mahitungod sa samang kantidad mga mensahe (matag mensahe ibutang sa usa lang ka pila). Walay kompletong garantiya sa uniporme nga pag-apod-apod sa mga mensahe.
Ang graphical nga representasyon sa dagan sa mensahe:
Hash gikuwenta base sa routing key o property headers mga mensahe. Kung ang tanan nga gipatik nga mga mensahe adunay lainlaing mga yawe sa ruta, o headers, unya ang pag-apod-apod mahitabo pinaagi sa gibug-aton. Kay kon dili, ang routing key ang gamiton, o headers.
Kinahanglan nga makatabang kung ang pagkonsumo sa mga konsumedor kinahanglan nga motubo nga mas taas kaysa usa ka solusyon nga adunay daghang mga konsumedor nga naggamit sa parehas nga pila.
Kombinasyon sa mga exchanger (E2E)
Ang pamatasan sa tanan nga mga tigbaylo mahimong mahiusa gamit ang komunikasyon Pagbaylo-sa-pagbaylo (Ang kombinasyon sa mga exchanger wala gilakip sa espesipikasyon AMQP. Kini usa ka extension sa protocol gikan sa kilid RabbitMQ).
Ang graphical nga representasyon sa dagan sa mensahe:
Sa gasto sa E2E makit-an nato ang husto nga scalable configuration nga makatubag sa kasamtangan ug nagtubo nga mga kinahanglanon.
Paghimo og Exchange
Ang exchanger gihimo gamit ang usa ka synchronous RPC hangyo sa server. Ang hangyo gihimo gamit ang pamaagi Exchange.Declare, gitawag nga adunay mga parameter:
exchange - ang ngalan sa exchanger nga gusto namong buhaton. Ang ngalan kinahanglan nga talagsaon
type - matang sa exchanger
durable - kung gi-install true, dayon exchange mahimong permanente. Kini tipigan sa disk ug mahimong mabuhi sa usa ka server/broker restart. Kung ang bili false, dayon exchange temporaryo ug tangtangon kung ang server/broker gi-restart
autoDelete - awtomatik nga pagtangtang. Exchange mapapas kung ang tanan nga kaubang pila matangtang
arguments mga opsyonal nga argumento. Kasagaran, pinaagi sa mga argumento nga gitakda alternative exchange (alternatibo nga exchanger). Kung ang usa ka mensahe dili makaagi sa orihinal nga ruta, mahimo kini ipadala sa usa ka alternatibo nga pagbinayloay aron madala sa lahi nga agianan.
Kon paglalang exchangelagmit, unya ang server magpadala sa kliyente og usa ka synchronous RPC tubag Exchange.DeclareOk. Kon paglalang dili mahimo (adunay pagdumili sa hangyo Exchange.Declare) unya ang channel mosira server gamit ang usa ka asynchronous nga sugo Channel.Close ug ang kliyente makakuha og eksepsiyon OperationInterruptedException, nga adunay sulod nga error code ug ang paghulagway niini.
Kinahanglan nga maghimo usa ka exchanger sa dili pa i-post. Kung magmantala ka usa ka mensahe sa pipila nga wala naglungtad nga exchanger - RabbitMQ kuhaa kini sa hilom.
Paghimo ug Exchange GUI
Adto sa admin panel RabbitMQ ubos sa user guest (username: guest ug password: guest). Palihug timan-i nga ang user guest mahimo ra magkonektar gikan sa localhost. Karon adto ta sa tab Exchanges ug i-klik ang Add a new exchange. Pun-a ang mga kabtangan:
Kadaghanan sa mga kabtangan nga gihulagway sa ibabaw. Dinhi atong timan-an nga kon atong ibutang Internal, unya ang pagbaylo magamit lamang alang sa E2E. Producer dili makapadala og mga mensahe sa ingon nga pagbinayloay.
konklusyon
Kung nagpalambo sa usa ka sistema, dali nga ihulagway ang topology pagruta gamit ang graph. Apan sa dili ka pa magsugod sa paghimo og usa ka graph, angay nga ipasiugda ang mga agianan nga adunay taas nga trapiko, tungod kay. gikinahanglan nila mas taas nga throughput (performance). Sunod, mahimo nimong klasipikasyon ang trapiko. Ug unya magsugod sa pagtukod.
Kung naa sa gitukod nga graph kinutuban nga set routing yawe, unya, kini mao ang bili sa pagtan-aw ngadto sa pipila fanout exchange, nga 1:1 nga may kalabutan sa routing key. Hinumdomi kana fanout exchange ang pinakapaspas.
Kung ang gidaghanon sa mga rota hilig sa infinity, angay nga hatagan ug pagtagad topic exchange o, kung dili kinahanglan ang template, mahimo ka makapili direct exchnge, kay mas paspas siya topic exchange.
Mga kombinasyon sa lainlaing exchange kinahanglan makatabang kanimo sa pagpangita sa husto. scalable nga configuration, nga nagtagbo sa kasamtangan ug nagtubo nga mga kinahanglanon sa sistema.
Gidaghanon sa exchange ug ang mga pila kinahanglan gamay ra kung itandi sa gidaghanon sa mga ruta.
Sa sunod nga artikulo, magsugod kita sa pagsabot og dugang mahitungod sa Queues and Bindings.