Jaki jest najlepszy sposób na utrzymanie trwałej kolejki i powiązań, ale zawieszenie jej klientów?RabbitMQ wstrzymać zużycie kolejki
Przypadek użycia: chciałbym "pozwolić mu się zawiesić" i przestać obsługiwać wiadomości, jeśli otrzymujemy masę wiadomości, z którymi nie możemy sobie poradzić (np. Baza danych nie działa lub problem z schematem), ale chciałby dalej agreguj do kolejki. To pozwala na publikowanie, ale zawiesza konsumpcję.
mogę myśleć o trzech rozwiązań:
- mogę mieć wszystkie urządzenia związane z kolejki ciągłego odrzucania wiadomości i ponownie kolejkę, ale jest to rodzaj zasobów odpadów nie wspominając Mam programowo zrobić powyżej logiki.
- mogę zadzwonić
basic.cancelConsumer
na wszystkich konsumentów (patrz niżej) - albo w kategoriach spring-amqp Chyba mogę nazwać
shutdown
na wszystkich SimpleMessageListenerContainers, które są zobowiązane do kolejki.
już to robimy, ponieważ wiadomości są odrzucane. Problem polega na tym, że kończy się to jak nieskończoną pętlą awarii i jeśli twoje logowanie, że porażka, nawet więcej zasobów zostanie zmarnowane.
#3
wydaje się być idealnym rozwiązaniem, ale muszę wiedzieć, w jaki sposób można dowiedzieć się o wszystkich słuchaczach wiadomości, a następnie powiadomić ich o wyłączeniu. Przypuszczam, że mógłbym użyć wymiany fanoutów, aby powiadomić, że kolejka musi zostać zawieszona. Czuję, że RabbitMQ musi mieć coś wbudowanego w tę logikę. Inną kwestią jest to, że można powiązać wiele kolejek z kontenerem wiadomości (nie wszystkie zawieszenie może wymagać zawieszenia).
Dla #2
wiem mogę cancel the consumer z jego consumerTag
ale pytanie (zakładając, że jest to dobry sposób, żeby zrobić to powyżej), gdzie mogę uzyskać listę consumerTag
s do kolejki?
Dzięki. Wiem, jak zadeklarować kolejki w króliku jak wyżej.Wygląda na to, że będę musiał zarządzać moimi klientami na własną rękę, którą jest ścieżka, którą już pokonuję. Byłoby miło, gdyby królik miał opcję, aby administrator wstrzymał konsumpcję kolejki. –
Jedyne, co możesz zrobić z połączenia, to zmusić go do zamknięcia od administratora, który tak naprawdę nie jest tym, czego szukasz –