Kdyby\RabbitMQ dorucovani zprav konkretnimu consumerovi

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
skrivy
Člen | 52
+
0
-

Aktualne resim pripad, kdy mam v databazi seznam serveru a potreboval bych vzdy konkretnimu poslat zpravu. Samotne servery jsou unikatne identifikovane jejich hostnamem.

Na kazdem serveru mi pobezi nekolik consumeru, ktere vzdy budou naslouchat na urcitou ulohu (podle slozitosti ulohy) – priklad
5× consumer pro posli mail (nenarocna operace)
1× consumer pro zazalohuj mailbox (narocna operace – chci, aby se v jeden cas zalohoval jen jeden mailbox)
1× consumer pro …

Nedari se mi vsak vymyslet, jak spravne nakonfigurovat producera a consumery, aby naslouchaly jen zpravam, ktere jim patri.

Editoval skrivy (23. 4. 2016 11:34)

newPOPE
Člen | 648
+
0
-

Pouzit routing alebo topics?

skrivy
Člen | 52
+
0
-

Ok, tak uz jsem postoupil. Pri vytvareni serveru se rovnou vytvori i fronta a naroutuji se do ni zpravy z exchange podle urciteho klice (pro jednoduchost id serveru).

Kdyz se tedy posle zprava do exchange backup, tak se podle routing key zprava ulozi do fronty backup.mail1.domain.tld

Supr. Dorucovani zprav mi uz funguje.

Ted resim problem, jak spravne vytvorit consumera. Pokud to dobre chapu, tak soucasny kdyby/rabbitmq na to neni pripravene a budu si ho muset celkem hodne ohnout. Pominu-li teda moznost, ze bych mel na kazdem serveru jiny config, kde by bylo primo natvrdo napsano, na jake fronte ma naslouchat.

Potreboval bych tedy, aby consumer naslouchal na fronte, ktera je specificka pro ten jeden server – tzn. backup.mail1.domain.tld, pricemz mail1.domain.tld je ziskano pomoci getmyhostname().

Editoval skrivy (27. 4. 2016 14:01)

skrivy
Člen | 52
+
0
-

Tak nakonec vyhrano i tady – napsal jsem si vlastniho potomka \Kdyby\RabbitMq\Command\BaseConsumerCommand, kde v protected function initialize resim zmenu nazvu fronty.

Editoval skrivy (27. 4. 2016 16:16)