⏰ Sprzedaż 3. edycji trwa tylko 2 tygodnie!
14dni
00godz
00min
00sek
👉 Kupuję
Messaging: Pragmatycznie
DevMentors kurs od DevMentors · twórców Mikroserwisów: Revisited

Messaging Pragmatycznie Projektuj · Łącz · Wdrażaj · Utrzymuj

Komunikacja asynchroniczna w systemach rozproszonych nie będzie miała przed Tobą tajemnic. RabbitMQ, Kafka, Azure Service Bus - od fundamentów po wzorce, których nauczyły nas lata produkcyjnych wdrożeń.

26h
materiału wideo
115
lekcji w 21 modułach
3500+
kursantów DevMentors
Technologie omawiane w kursie

Messaging to więcej niż wysłanie wiadomości

Asynchroniczna komunikacja brzmi prosto - wystarczy odrobina kodu, pozwalająca podłączyć nasz rozproszony system do message brokera i voilà! Problemy zaczynają się zwykle… na produkcji, gdzie wzmożony ruch powoduje prawdziwe turbulencje. Ta sama wiadomość zostaje doręczona więcej niż raz, wiadomości przychodzą w złej kolejności, a restart mikroserwisu powoduje utratę zdarzeń. A miało być tak pięknie.

Kurs Messaging Pragmatycznie to nie tutorial jak podłączyć i wysłać wiadomość „Hello World!" poprzez RabbitMQ czy Kafkę. Uczymy od absolutnych fundamentów komunikacji asynchronicznej, po wzorce i pryncypia, które ratują systemy na produkcji - outbox, deduplikacja, idempotencja, transakcyjne wysyłanie, processing order.

To wiedza, którą zbieraliśmy przez lata pracy z systemami rozproszonymi - z błędów, incydentów i nocy spędzonych na debugowaniu. Chcemy przekazać ją Tobie, aby tych nocy Ci oszczędzić ;)

ticketflow-logs — production
09:41:02 InquirySubmitted → TicketsService
09:41:02 TicketCreated → SlaService
09:41:03 TicketCreated delivered 2x — duplicate!
09:41:04 TicketAssignedToAgent → CommunicationService
09:41:05 TicketAssignedToAgent arrived before TicketCreated
09:41:05 └─ ordering violation, consumer confused
09:41:07 TicketDeadlineCalculated → TicketsService
09:41:08 DB commit OK, but RabbitMQ publish failed
09:41:08 └─ TicketBlocked event lost — dual write problem
09:41:10 3 messages in Dead Letter Queue
09:41:12 SendNotification → CommunicationService
09:41:14 Consumer crashed — poison message
09:41:16 SlaBreached → TicketsService
09:41:17 Retry #3 for TranslationCompleted — backoff 8s
09:41:19 TranslationCompleted → TranslationsService
09:41:21 Outbox publisher stalled — connection lost
09:41:21 └─ 12 messages pending in outbox table
09:41:23 TicketAssignedToAgent → CommunicationService
09:41:25 Consumer lag: 847 messages behind
09:41:27 InquirySubmitted → InquiriesService
09:41:28 Deserialization failed — schema mismatch v2/v3
09:41:30 TicketBlocked → SlaService
09:41:32 Prefetch count exceeded — throttling

Wyzwania komunikacji asynchronicznej

Problemy, z którymi mierzy się każdy zespół wdrażający messaging w systemach rozproszonych. W kursie omawiamy każdy z nich - z kodem i rozwiązaniem.

🔁

Duplikaty wiadomości

At-least-once delivery oznacza, że ta sama wiadomość może dotrzeć wielokrotnie. Jak zaprojektować idempotentnych konsumentów i uniknąć podwójnego przetwarzania?

📬

Transakcyjne wysyłanie wiadomości

Zapis do bazy się powiódł, ale publikacja do brokera nie. Event przepadł, a system jest w niespójnym stanie. Outbox pattern i transakcyjne wysyłanie rozwiązują ten problem.

🔢

Zaburzona kolejność

TicketAssignedToAgent dociera przed TicketCreated. Partycjonowanie, Single Active Consumer, consistent hash - kiedy i jak zapewnić poprawny ordering?

💥

Obsługa błędów i DLQ

Poison messages, rosnąca Dead Letter Queue, brak strategii retry. Jak klasyfikować błędy i budować obsługę, która nie sparaliżuje systemu?

🔍

Brak widoczności (observability)

Wiadomość weszła do brokera i... zniknęła. Distributed tracing, correlation IDs i metryki pozwalają namierzyć problem w flow przechodzącym przez wiele serwisów.

🧪

Testowanie asynchronicznego flow

Jak weryfikować poprawność producenta i konsumenta? TestContainers, testy integracyjne z brokerem i strategie, które wyłapią błędy przed produkcją.

Po tym kursie będziesz:

1
Świadomie projektować topologię w odniesieniu do wymagań funkcjonalnych systemu
2
Implementować producentów i konsumentów odpornych na awarie, duplikaty i zaburzenia kolejności
3
Stosować wzorce produkcyjne: outbox, deduplikacja, idempotencja, transakcyjne wysyłanie wiadomości
4
Zarządzać kolejnością przetwarzania, ewolucją schematów wiadomości i obsługą błędów w systemie rozproszonym
5
Wdrażać observability dla komunikacji asynchronicznej: distributed tracing, metryki i alerting
6
Testować integracyjnie producentów i konsumentów z użyciem TestContainers i rzeczywistego brokera

Dla kogo jest ten kurs?

Kurs Messaging Pragmatycznie kierujemy do programistów na poziomie Regular+, którzy chcą pozyskać ekspercką wiedzę w tematyce komunikacji asynchronicznej w systemach rozproszonych.

  • Chcesz podnieść swoje kwalifikacje i pewnie rozmawiać o komunikacji asynchronicznej na rozmowach rekrutacyjnych i w zespole
  • Pracujesz z systemami rozproszonymi i czujesz, że messaging jest największą niewiadomą
  • Używasz RabbitMQ / Kafki / Azure Service Bus, ale chcesz w końcu zrozumieć dlaczego robisz pewne rzeczy tak, a nie inaczej
  • Chcesz posiadać kompletną wiedzę o wzorcach takich jak outbox, deduplikacja czy idempotencja, która zabezpieczy Cię przed awariami na produkcji
  • Wolisz wiedzę z produkcji niż z dokumentacji
Dopiero zaczynasz? Jeśli jesteś na początku drogi z budowaniem API, zacznij od naszego kursu SOLIDne Web API, gdzie poruszamy fundamenty synchronicznej komunikacji opartej o HTTP. Potem wracaj tu.
📈 Chcesz podnieść swoje umiejętności?
📚 Szukasz wiedzy od A do Z?
🎯 Chcesz świadomie projektować async?
Pan Koperta - maskotka kursu Messaging Pragmatycznie
To wszystko znajdziesz w Messaging: Pragmatycznie

Program kursu

21 modułów, 115 lekcji, 26 godzin materiału.
Od synchronicznej komunikacji, przez RabbitMQ i Kafkę, po testowanie i observability.

1

Wprowadzenie do kursu

5 lekcji
+

Przed wyruszeniem w drogę należy z... klonować repo. Ale nie tylko. Zanim wskoczysz w moduły wokół messagingu, wprowadzimy Cię w strukturę kursu, narzędzia jakie otrzymasz do nauki oraz dziedzinę problemową, w której będziesz się poruszać.

  • Założenia kursu8:50
  • Struktura kursu4:58
  • Dziedzina problemowa14:11
  • Anomalie w TicketFlow4:09
  • Kod i infrastruktura w TicketFlow13:49
2

Komunikacja synchroniczna

8 lekcji
+

Zanim przejdziemy do komunikacji asynchronicznej, omówimy ograniczenia i wyzwania komunikacji synchronicznej. Dzięki temu zrozumiesz, dlaczego ten model nie zawsze sprawdza się w architekturze rozproszonej.

  • Dyskusja wprowadzająca4:25
  • Komunikacja synchroniczna1:49
  • Komunikacja synchroniczna w TicketFlow13:19
  • Wyzwania komunikacji synchronicznej2:16
  • Problemy z czasem odpowiedzi i wydajnością3:01
  • Zależność od dostępności wszystkich usług4:36
  • Problemy spowodowane przez błędy, skalowanie i coupling6:50
  • Dyskusja podsumowująca4:31
  • Challenge
3

Komunikacja asynchroniczna - teoria

6 lekcji
+

Wiemy już jakie wyzwania stawia przed nami komunikacja synchroniczna. Pora więc spróbować innego podejścia i - póki co - w oparciu o samą teorię omówić alternatywę - komunikację asynchroniczną.

  • Dyskusja wprowadzająca2:33
  • Idea komunikacji asynchronicznej9:19
  • Składowe komunikacji asynchronicznej14:07
  • Adres i droga komunikatu10:31
  • Message broker6:57
  • Dyskusja podsumowująca2:49
4

RabbitMQ

6 lekcji
+

Wygląda na to, że znaleźliśmy rozwiązanie naszych problemów - komunikacja asynchroniczna i message broker pozwolą nam zbudować bardziej odporny i rozwijalny system rozproszony. A skoro mowa o brokerze, pora przedstawić nasze główne narzędzie w nadchodzących modułach - RabbitMQ i protokół AMQP.

  • Dyskusja wprowadzająca3:03
  • RabbitMQ i protokół AMQP7:06
  • Building blocks w RabbitMQ7:24
  • Topologia i projektowanie w RabbitMQ3:44
  • Uruchomienie RabbitMQ20:36
  • Dyskusja podsumowująca3:10
  • Challenge
5

Połączenie z aplikacja

6 lekcji
+

RabbitMQ zwarty i gotowy czeka już na nas w swoim Dockerowym kontenerze. Pora byśmy wskoczyli w kod i połączyli się z brokerem wiadomości, stawiając pierwsze kroki z jego SDK.

  • Dyskusja wprowadzająca3:20
  • RabbitMQ.Client1:43
  • Połączenie (Connection)13:16
  • Kanał (Channel)8:59
  • Virtual Host8:10
  • Dyskusja podsumowująca5:51
  • Challenge
6

Wiadomość

8 lekcji
+

Połączono! Skoro wiemy już jak rozpocząć pracę z naszym brokerem, pora byśmy omówili wiadomość, czyli ładunek informacyjny, który jest sednem zarówno komunikacji synchronicznej jak i asynchronicznej.

  • Dyskusja wprowadzająca2:26
  • Komunikat "w akcji"17:09
  • Co zawiera wiadomość?9:26
  • Koperta wiadomości8:43
  • Semantyka wiadomości (command, event, request/response)7:39
  • Topologia - jak wpływa na nią semantyka wiadomości?6:55
  • Zakres danych (event notification vs. event-carried state transfer)10:29
  • Dyskusja podsumowująca5:59
  • Challenge
7

Producent

13 lekcji
+

Wiadomość wiadomością ale ktoś ją przecież musi wysyłać... W tym module poznasz szczegóły nadawcy wiadomości czyli "producenta" oraz narzędzia, jakie mamy dla niego dostępne w RabbitMQ.

  • Dyskusja wprowadzająca3:23
  • Czego potrzebujemy do publikacji wiadomości?7:17
  • Wymiana (Exchange)1:08
  • Fanout Exchange6:12
  • Direct Exchange6:04
  • Topic Exchange9:03
  • Headers Exchange7:07
  • Alternate Exchange11:19
  • Exchange-to-exchange5:32
  • Topologia od strony producenta wiadomości5:56
  • Publikowanie wiadomości w TicketFlow29:14
  • Default exchange11:10
  • Dyskusja podsumowująca4:24
  • Challenge
8

Konsument

11 lekcji
+

Wiadomość wyprodukowana, zaadresowana i... no właśnie? Ktoś jeszcze musi tą wiadomość odebrać i skonsumować. Dlatego też w tym module omówimy podstawowe koncepty wokół drugiego (po producencie) ogniwa komunikacji asynchronicznej - konsumenta.

  • Dyskusja wprowadzająca3:32
  • Konsument - podstawy12:31
  • Pull vs. push, czyli modele konsumowania10:33
  • Przepływ wiadomości w aplikacji27:57
  • Przepływ wiadomości - mniej typowe scenariusze16:22
  • Skalowanie konsumenta9:22
  • Architektura pipes and filters18:10
  • Tworzenie topologii z aplikacji18:05
  • Kolejki tymczasowe17:31
  • Wiadomość o określonym czasie życia12:17
  • Dyskusja podsumowująca7:08
9

Modele dostarczania wiadomości

7 lekcji
+

Wiadomość - jest. Producent - jest. Konsument - jest. Czyli co, kończymy kurs? Nic bardziej mylnego! Dopiero teraz zaczynają się schody i wkraczamy w zaawansowane koncepty komunikacji asynchronicznej. W tym module poznasz bowiem wyzwania wynikające z różnych modeli dostarczania wiadomości.

  • Dyskusja wprowadzająca2:30
  • Kontekst problemu dostarczania wiadomości2:54
  • Acknowledgment i DeliveryTag2:10
  • At least once delivery12:15
  • At-most once delivery6:09
  • Exactly-once delivery - dlaczego w większości przypadków to ściema?3:41
  • Dyskusja podsumowująca3:52
  • Challenge
10

Deduplikacja

6 lekcji
+

Mądrzejsi o wiedzę z poprzedniego modułu z pokorą wkraczamy w kolejne zaawansowane tematy. Wiedząc, że ta sama wiadomość do konsumenta dotrzeć może więcej niż raz, musimy się jakoś zabezpieczyć.

  • Dyskusja wprowadzająca2:21
  • Duplikaty wiadomości - jak możemy do nich podejść?2:54
  • Deduplikacja biznesowa6:00
  • Deduplikacja techniczna w teorii2:42
  • Deduplikacja techniczna w praktyce30:47
  • Dyskusja podsumowująca6:21
  • Challenge
11

Obsługa błędów

8 lekcji
+

Pierwszy poważny problem rozwiązany - nie straszne nam już zduplikowane wiadomości. Nie da się jednak ukryć, że dużo szybciej napotkamy dużo bardziej przyziemne problemy - np. co, gdy w trakcie odbioru wiadomości przytrafią się nam aplikacyjne "fajerwerki"?

  • Dyskusja wprowadzająca3:32
  • Podejścia do rozwiązywania błędów w komunikacji9:15
  • Ponawianie odbioru przez konsumenta15:06
  • Dead letter queue (DLQ) - konsument13:47
  • Błędy jako zdarzenia po stronie konsumenta14:18
  • Wykrywanie braku konsumenta przez producenta13:24
  • Wykrywanie błędu zapisu wiadomości przez producenta12:22
  • Dyskusja podsumowująca10:26
  • Challenge
12

Tranzakcyjne wysyłanie wiadomości

13 lekcji
+

Komunikat wysłany, a może już nawet przetworzony przez oczekujących konsumentów. Jeszcze tylko COMMIT na bazie danych i zamykamy transakcje biznesową a na końcu... Exception?

  • Dyskusja wprowadzająca2:53
  • Wiadomość jako side-effect12:47
  • Outbox pattern2:08
  • Zapis wiadomości do outboxa20:03
  • Publikowanie wiadomości z outbox19:30
  • Bolączki wzorca outbox1:19
  • Natychmiastowe publikowanie z outbox18:16
  • Skalowanie horyzontalne outbox6:41
  • Błędy aplikacji, a wzorzec outbox7:48
  • Outbox w scenariuszu biznesowym5:03
  • Listen to yourself pattern2:06
  • Listen to yourself w scenariuszu biznesowym10:07
  • Dyskusja podsumowująca5:54
  • Challenge
13

Wprowadzanie zmian

6 lekcji
+

Z każdym kolejnym modułem nasz system staje się coraz bardziej odporny na przeróżne software'owe turbulencje. Jak to jednak bywa w cyklu życia każdego oprogramowania, przychodzi moment, kiedy trzeba wprowadzić zmiany.

  • Dyskusja wprowadzająca3:15
  • Ewolucja systemu4:56
  • Zmiana wersji payloadu6:10
  • Zmiana schematu wiadomości23:07
  • Zmiana w topologii5:54
  • Dyskusja podsumowująca4:05
  • Challenge
14

Kolejność przetwarzania

13 lekcji
+

Jedna zmiana i pół systemu płonie - co gorszego może nam się przytrafić? Wyobraźmy sobie w takim razie, że wiadomości docierają do nas bezbłędnie. Tylko kolejność jakaś taka... zła?

  • Dyskusja wprowadzająca4:16
  • Ordering w scenariuszu biznesowym8:47
  • Topologia, a kolejność przetwarzania wiadomości17:14
  • Prefetch count19:11
  • Ordering, a skalowanie horyzontalne konsumenta5:12
  • Wersjonowanie, a kolejność przetwarzania wiadomości22:44
  • Single Active Consumer (SAC)10:38
  • Total ordering vs. causality3:33
  • Partycjonowanie przy użyciu consistent hash3:32
  • Consistent Hash Exchange37:29
  • Consistent Hash Exchange + Single Active Consumer9:16
  • Ordering, a logika biznesowa6:48
  • Dyskusja podsumowująca7:00
  • Challenge
15

Trwałość wiadomości

6 lekcji
+

Udało się - wiadomości nie tylko zmierzają ale i przetwarzane są w kolejności. Upewnijmy się jednak, by niewinny restart serwera nie stał się dla naszego systemu katastrofą.

  • Dyskusja wprowadzająca3:13
  • Po co utrwalać wiadomości?7:58
  • Kiedy wiadomość jest utrwalana?12:29
  • Outbox jako suplement trwałości brokera9:55
  • Trwałość w RabbitMQ 4.0 i beyond6:22
  • Dyskusja podsumowująca2:07
  • Challenge
16

Message streaming i Apache Kafka

6 lekcji
+

15 modułów za nami i message brokerzy nie kryją już przed nami zbyt wielu tajemnic. Warto jednak, byśmy poznali również alternywę w postaci platform streamingowych na przykładzie Apache Kafka.

  • Dyskusja wprowadzająca2:55
  • Message streaming i Apache Kafka13:35
  • Uruchomienie i przykład użycia29:04
  • Partitions + consumer groups + offset28:14
  • Message streaming vs. message broker - przypadki użycia13:10
  • Dyskusja podsumowująca7:28
  • Challenge
17

Azure Service Bus

8 lekcji
+

Dawno minęły już czasy, gdy praca w rozwiązaniach chmurowych była tylko dla wybranych. Dlatego też w tym module zderzysz swoją dotychczasową wiedzę z komunikacji asynchronicznej z rozwiązaniem dostępnym w Azure. Dzięki tym paru lekcjom uświadomisz sobie jak dogłębne zrozumienie fundamentów pozwala wejść z pewnością w nowe rozwiązanie messagingowe.

  • Dyskusja wprowadzająca4:28
  • Azure i Azure Portal UI14:21
  • Topic, Subscription i Queue23:07
  • Azure SDK w naszej aplikacji36:38
  • Subscription filters14:20
  • Deduplikacja15:26
  • Sesje21:49
  • Dyskusja podsumowująca6:14
  • Challenge
18

Observability

6 lekcji
+

Czego oczy nie widzą tego sercu nie żal? Nie w systemach rozproszonych! O ile messaging wiele rzeczy ułatwia, to odnajdywanie się w drodze komunikatu i wyłapywanie błędów z nim związanych do nich nie należy. W tym module poznasz absolutne minimum jeśli chodzi o obserwowalność systemu, jakie powinno towarzyszyć wdrażaniu na produkcję messagingu.

  • Dyskusja wprowadzająca3:53
  • Observability - dlaczego nie jest opcjonalne?2:40
  • Czym jest distributed tracing?1:37
  • Distributed tracing w komunikacji synchronicznej21:15
  • Distributed tracing z message brokerem23:56
  • Dyskusja podsumowująca4:43
  • Challenge
19

Testowanie

6 lekcji
+

Testowanie na prodzie? Dziękuje, postoję! W tym module przeanalizujemy co, jak i kiedy możemy przetestować wystarczająco wcześniej, zanim dojdzie do "pożaru na prodzie".

  • Dyskusja wprowadzająca4:03
  • Jak możemy testować komunikację asynchroniczną?8:55
  • Testowanie integracyjne z TestContainers23:35
  • Testy integracyjne producenta wiadomości14:01
  • Testy integracyjne konsumenta wiadomości13:32
  • Dyskusja podsumowująca3:58
  • Challenge
20

Zakończenie

1 lekcja
+
21

Lekcje uzupełniające

2 lekcje
+

Planowaliśmy skonczyć na 20 modułach ale po co się ograniczać? Poniższe lekcje powstały po pierwszej edycji, by uzupełnić dotychczasową wiedzę zawartą w kursie. Udanej nauki!

  • RabbitMQ.Client - wersja 7.x43:21
  • Dokumentacja z AsyncAPI i EventCatalog58:56

Zapoznaj się z kodem

TicketFlow - pełny projekt kursu, otwarty na GitHubie. Sprawdź zanim kupisz.

TicketFlow - kod kursu Messaging Pragmatycznie

Cały kod kursu znajdziesz na GitHubie. Bez ukrytych slajdów, bez "zaufaj mi". Możesz przejrzeć implementację, uruchomić u siebie, popatrzeć jak wygląda realny kod messagingowy w .NET.

Szczegóły dziedziny problemowej, topologię komunikacji naszego modelowego projektu TicketFlow oraz instrukcje jak uruchomić poszczególne części systemu znajdziesz w README. Cała infrastruktura podnosi się jednym docker compose up.

TicketFlow obejmuje pełny stack: .NET, RabbitMQ, Kafka, Azure Service Bus, PostgreSQL, Jaeger, Docker, React. Otwarte repo, otwarty kod - sprawdź zanim kupisz.

devmentors/Messaging-Pragmatycznie

Sprawdź darmowe materiały

Zanim cokolwiek kupisz - obejrzyj. Sześć darmowych odcinków na YouTubie pokazuje czego się spodziewać.

▶ Zobacz cały kanał DevMentorsPL

W pakiecie

Wszystko, czego potrzebujesz, żeby messaging przestał być czarną magią.

🎬
26h materiału
115 lekcji w 21 modułach tematycznych
💻
Open source repo
Pełny projekt TicketFlow na GitHubie
📜
Certyfikat
Dodaj do CV i LinkedIn po ukończeniu
👥
Społeczność
Discord z tysiącami programistów DevMentors

Twórcy kursu

Praktykujący architekci, którzy mają za sobą lata wdrożeń systemów rozproszonych

Dariusz Pawlukiewicz

Dariusz Pawlukiewicz

Co-founder DevMentors

Specjalista od architektury oprogramowania, DDD i systemów rozproszonych. Praktyk z wieloletnim doświadczeniem w budowaniu skalowalnych systemów.

Michal Wilczynski

Michał Wilczyński

Co-founder DevMentors

Architekt i programista .NET. Pasjonat czystego kodu, pragmatycznego podejścia do rozwiązań i dzielenia się wiedzą.

🏢

Kupujesz na firmę?

Nie ma problemu. Zakup kursu opłacisz w wygodny dla Ciebie sposób: kartą, tradycyjnym przelewem lub przez bramkę płatności online. Jak tylko zaksięgujemy wpłatę - wystawiamy fakturę VAT i wysyłamy mailem.

Chcesz, żeby kurs kupił Ci pracodawca? Przekaż swojemu działowi HR link do tej strony. Po opłaceniu jest możliwość przypisania licencji do konkretnej osoby na podstawie adresu e-mail.

  • Faktura VAT na firmę
  • Karta, przelew, bramka online
  • Licencje przypisywane do pracownika
  • Zakup grupowy dla zespołu

Jeśli potrzebujesz szczegółów kursu "w pigułce" dla swojego pracodawcy - przygotowaliśmy dedykowany PDF na tę okazję.

Pobierz PDF dla pracodawcy

Co mówią kursanci?

Opinie z poprzednich edycji kursu Messaging Pragmatycznie

★★★★★

Najbardziej podobało mi się połączenie podstaw teoretycznych z faktycznie działającym kodem źródłowym, z którego później można skopiować fragmenty pod scenariusz biznesowy który nas interesuje. Bardzo fajny kurs z bądź co bądź dosyć zaawansowanego technicznie tematu.

PR
Piotr Rabiniak
Kursant
★★★★★

Świetny kurs, dokładnie tego potrzebowałem. Z poziomu wiedzy "coś tam wiem, coś słyszałem" - do poziomu w którym mogę aktywnie dyskutować na tematy messagingu i rozumiem dogłębnie problematykę. Mogę uznać to jako najlepszy kurs jaki przerabiałem, trzymajcie tak dalej!

MG
Mateusz Glejzer
Kursant
★★★★★

Super, kurs, pragmatyczny, przydał mi się w ostatnim miesiącu w pracy (…) Bez kursu i możliwości analizy waszych rozwiązań zajęłoby mi to chyba z 3 miesiące by samemu załapać jak to dokładnie działa. Ponadto wiedza, którą zdobyłem w kursie przydała mi się na rozmowach rekrutacyjnych (…) Najlepiej wydane pieniądze ever.

SD
Szymon Dołęgowski
Kursant

Cennik

Sprzedaż 3. edycji trwa tylko 2 tygodnie. Potem zamykamy do następnej edycji.

3. edycja · 2026
Messaging Pragmatycznie
Pełny kurs · dożywotni dostęp
1699 + VAT · faktura na firmę dostępna
  • 26 godzin materiału wideo
  • 115 dedykowanych lekcji w 21 modułach
  • Challenge'e do przerobienia po każdym module
  • Dostęp do open source repo TicketFlow
  • Certyfikat ukończenia
  • Społeczność na Circle
  • Dożywotni dostęp + wszystkie aktualizacje
👉 Kupuję kurs
🔒 Bezpieczne płatności SSL 🧾 Faktura VAT ⚡ Natychmiastowy dostęp

Często zadawane pytania

Kurs kierujemy do programistów na poziomie Regular+. Powinieneś znać podstawy .NET, mieć doświadczenie w budowaniu API i czuć się komfortowo w środowisku rozproszonym. Jeśli dopiero zaczynasz - zacznij od kursu SOLIDne Web API.

Tak. Kurs nie zaczyna się "od zera" - omawiamy zaawansowane wzorce, których brakuje w większości tutoriali: outbox, deduplikacja, transakcyjne wysyłanie, processing order, listen to yourself. Nawet jeśli RabbitMQ piszesz na co dzień, znajdziesz tu nowe rzeczy.

Zdecydowanie. Wzorce komunikacji asynchronicznej są uniwersalne - outbox, deduplikacja, ordering czy obsługa błędów wyglądają podobnie niezależnie od brokera. RabbitMQ jest narzędziem, którego używamy do nauki, ale wiedza przekłada się 1:1 na inne brokery. Jest też dedykowany moduł o Azure Service Bus.

Masz 14 dni na zwrot bez podawania przyczyny. Jeśli kurs nie spełni Twoich oczekiwań - napisz do nas i zwracamy 100% kwoty. Bez zbędnych pytań.

Dostęp jest dożywotni. Kupujesz raz i masz dostęp na zawsze, włącznie ze wszystkimi przyszłymi aktualizacjami i lekcjami uzupełniającymi.

Do uruchomienia przykładów potrzebujesz .NET, Docker Desktop oraz dowolnego IDE (Visual Studio, Rider, VS Code). Cała infrastruktura projektu TicketFlow podnosi się jednym docker compose up. Działa na Windows, macOS i Linux.

Tak, faktura VAT jest wystawiana automatycznie po zaksięgowaniu wpłaty. Jeśli kupujesz na firmę, podaj dane firmy podczas zakupu. Potrzebujesz proforma? Napisz na contact@devmentors.io.

Tak. Po ukończeniu kursu otrzymasz certyfikat DevMentors potwierdzający ukończenie szkolenia - możesz dodać go do CV i LinkedIn.

Po zakończeniu płatności otrzymasz email z danymi logowania do platformy kursowej. Dostęp jest natychmiastowy - możesz zacząć naukę od razu.