Kun luot suoran vaihdon, se ohjaa viestin siihen sidottuun jonoon.
Ok Julio, mutta jos minulla on 2 jonoa tässä vaihdossa?
Hyvä kysymys ystäväni! 😉
Tällöin Routing Key astuu voimaan.
Routing Key on attribuutti, jonka tehtävänä on ilmoittaa vaihdolle, mihin jonoon viesti ohjataan.
Huomautus: Vaihde ohjaa vastaanotetun sanoman vain sellaisiin jonoihin, joiden reititysavaimet ovat täsmälleen samat.
Huomautus 2: Jos sidotuilla jonoilla on sama reititysavain, tämä sanoma ohjataan näille jonoille samanaikaisesti.
Fanout
Toisin kuin Direct-tyypissä, Fanoutissa ei ole Routing Key -lukua.
Kun Fanout-vaihdelaatikko vastaanottaa sanoman, kopio tästä sanomasta lähetetään kaikkiin siihen sidottuihin jonoihin.
Topic
Kuvitellaan, että Topic-tyyppi on Direct-tyyppi, mutta erikoisuutena Routing Keys -kuviot.
Topicissa on mahdollista käyttää kuvioita reititysavaimille.
Nämä kuviot voidaan luoda *- ja #-merkeillä.
Kun luodaan reititysavainkuvio #:llä, kerromme pörssille, että tämä # voidaan korvata 0 tai n sanalla.
Kun käytämme *:a, kerromme pörssille, että * voidaan korvata vain yhdellä sanalla.
Siten kun Topic-tyyppinen vaihde vastaanottaa sanoman, se tarkistaa sanoman reititysavaimen, vertaa sitä jonojen reititysavaimiin ja lähettää kopion kyseisestä sanomasta kaikkiin jonoihin, joissa reititysavaimet (sanoma ja jono) yhdistyvät.
Esimerkki:
Viestin reititysavain: routing.key.test
Yllä olevassa tapauksessa viesti lähetetään jonoon 1, 3 ja 4. Sitä ei lähetetä odotusjonoon 2, koska kuvio edellyttää, että sanan ”routing.” jälkeen on vain yksi sana, ja meidän tapauksessamme niitä on kaksi.
Headers
Ennen tämän vaihdon selittämistä on tarpeen ilmoittaa, että on mahdollista lähettää attribuutteja viestin otsakkeessa (kuten HTTP:n otsakkeessa)
Headers-vaihto on samanlainen kuin Topic-vaihto, mutta reititysavainten vertailun sijaan se vertaa viestin otsakkeessa esiintyviä attribuutteja niihin attribuutteihin, jotka esiintyvät argumenteissa, jotka on määritelty, kun sidomme jonon vaihdossa.
Tätä validointia varten on mahdollista luoda sääntö.
Säännön luomiseksi käytämme argumenttia ”x-match”-avaimella, jolla on 2 mahdollista arvoa: any ja all.
Jokainen on verrattavissa ehdon || ja kaikki ovat verrattavissa &&.
Esimerkki:
Kun lähetämme viestin, jossa on argumenttina {”avain1”: ”value1”} sen otsikossa, tämä viesti ohjataan vain ”headers.queue1”-jonoon, koska siinä on attribuutti {”key1”: ”value1”} tämän jonon argumenteissa.
Jos kyseessä on ”headers.queue2”-jono, tiedonsiirto tarkistaa, sisältääkö viestin otsikko kaksi argumenttia, koska ”x-match” on asetettu arvoon all. Siksi vaihto ei löydä {”key2”: ”
Toivon, että tämä nopea selitys auttaa sinua ymmärtämään RabbitMQ-vaihtoja.
Tietääksesi lisää: https://www.rabbitmq.com/tutorials/amqp-concepts.html
Liity yhteisömme Slackiin ja lue viikoittaiset Faun-aiheemme ⬇
.