Listen: jeden wyzwalacz, wiele handlerów
Rozsyłanie pojedynczego powiadomienia.
Listen: jeden wyzwalacz, wiele handlerów to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Jedno zdarzenie, wiele reakcji
Czasami jedna zmiana powinna uruchomić kilka handlerów jednocześnie. Słowo kluczowe listen pozwala wielu handlerom zasubskrybować jeden temat.
Powiadamianie tematu zamiast nazwy
W przypadku listen wartość notify wskazuje nazwę logicznego zdarzenia zamiast tytułu jednego konkretnego handlera.
- name: Update certs
ansible.builtin.copy:
src: site.pem
dest: /etc/ssl/site.pem
notify: restart web stackHandlery subskrybują temat za pomocą listen
Każdy handler dodaje wiersz listen z nazwą tego samego tematu. Wszystkie handlery nasłuchujące tego tematu uruchamiają się po otrzymaniu powiadomienia.
handlers:
- name: Restart nginx
ansible.builtin.service:
name: nginx
state: restarted
listen: restart web stackWiele handlerów, jeden temat
Przypisz kilku handlerom tę samą wartość listen, a pojedyncze notify przekaże powiadomienie do wszystkich. To świetne rozwiązanie przy grupowych restartach.
- name: Restart php-fpm
ansible.builtin.service:
name: php-fpm
state: restarted
listen: restart web stackOddziel zadania od handlerów
Największą korzyścią jest rozsprzęganie: zadania odwołują się do tematu, a handlery można dodawać lub usuwać bez modyfikowania zadań wysyłających powiadomienia.
name nadal opcjonalne, ale przydatne
Handler korzystający z listen nadal może mieć pole name, dzięki czemu dane wyjściowe pozostają czytelne, a inne zadania mogą również powiadamiać go bezpośrednio.
Handler może nasłuchiwać wielu tematów
Przekaż do listen listę, a jeden handler będzie reagował na kilka różnych tematów. Zareaguje na każde powiadomione zdarzenie.
listen:
- restart web stack
- reload tlsNadal idempotentne
Powiadomienia oparte na tematach podlegają tym samym zasadom: handlery uruchamiają się tylko po changed, a każdy z nich nadal wykonuje się najwyżej raz w każdym playu.
Nadal obowiązuje kolejność definicji
Gdy temat uruchamia kilka handlerów, wykonują się one w kolejności, w której zostały zdefiniowane na liście handlerów, tak jak zwykłe handlery.
Częste zastosowanie we współdzielonych rolach
Role wielokrotnego użytku wykorzystują listen, aby użytkownicy powiadamiali stały temat, podczas gdy rola może swobodnie zmieniać wewnętrzny zestaw handlerów.
notify a listen
notify to sygnał z zadania, a listen to subskrypcja handlera. Razem zmieniają jedno zdarzenie w wiele działań. 🔔
Szybki test
Chcą Państwo użyć jednego notify, aby jednocześnie ponownie uruchomić trzy usługi. Co pozwala wielu handlerom reagować na jeden temat?
Podsumowanie
Za pomocą listen zadanie powiadamia temat, a każdy zasubskrybowany handler zostaje uruchomiony. Dzięki temu zadania są niezależne od handlerów, a rozwiązanie łatwo skaluje się. 🎯
Często zadawane pytania
Czy lekcja „Listen: jeden wyzwalacz, wiele handlerów” jest bezpłatna?
Tak — pełny tekst „Listen: jeden wyzwalacz, wiele handlerów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Co nauczysz się w „Listen: jeden wyzwalacz, wiele handlerów”?
Rozsyłanie pojedynczego powiadomienia. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?
Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Listen: jeden wyzwalacz, wiele handlerów”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?
Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Powiadamianie handlera o zmianie
- Definiowanie handlerów i wzorce restartu
- Kiedy uruchamiają się handlery i flush_handlers
- Listen: jeden wyzwalacz, wiele handlerów