0Pricing
C# Academy · Lekcja

Koncepcje komunikacji

Poznaj polecenia, zdarzenia i kolejki.

Koncepcje komunikacji to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 1 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 C# Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C# Academy zawiera 4 lekcji w sumie.

Po co komunikacja za pomocą komunikatów

Komunikacja asynchroniczna za pomocą komunikatów pozwala usługom komunikować się bez bezpośredniego wywoływania siebie nawzajem. Producent umieszcza komunikat, a konsument odbiera go później. Rozdziela to usługi, łagodzi skoki obciążenia i zwiększa odporność systemu, gdy konsument jest chwilowo niedostępny.

Czym jest MassTransit

MassTransit to platforma .NET działająca na brokerach komunikatów, takich jak RabbitMQ lub Azure Service Bus. Obsługuje serializację, routing, ponawianie prób i inne zadania, dzięki czemu mogą się Państwo skupić na komunikatach i handlerach, zamiast zajmować się konfiguracją brokera.

dotnet add package MassTransit

Polecenia a zdarzenia

Istotne są dwa rodzaje intencji komunikatów. Polecenie nakazuje konkretnej usłudze wykonanie działania („ChargePayment”). Zdarzenie informuje zainteresowanych odbiorców, że coś się wydarzyło („OrderPlaced”). Polecenie ma jeden handler, a zdarzenie może mieć ich wiele.

Modelowanie polecenia

Polecenie jest zwykłym typem komunikatu o nazwie wyrażającej działanie. Należy wysłać je do jednego konsumenta.

public record ChargePayment(
    Guid OrderId,
    decimal Amount);

Modelowanie zdarzenia

Zdarzenie nosi nazwę w czasie przeszłym i jest publikowane wszystkim zainteresowanym subskrybentom.

public record OrderPlaced(
    Guid OrderId,
    string CustomerEmail);

Kolejki

Kolejka przechowuje komunikaty do czasu ich przetworzenia przez konsumenta. Jest mechanizmem punkt-punkt: każdy komunikat jest dostarczany dokładnie jednemu konsumentowi, co umożliwia równoważenie obciążenia między instancjami konsumentów (konkurującymi konsumentami).

Exchange i tematy

Brokerzy tacy jak RabbitMQ kierują komunikaty za pośrednictwem elementów exchange. Producent publikuje komunikat w exchange, który rozsyła go do wszystkich powiązanych kolejek. W ten sposób jedno zdarzenie dociera do wielu subskrybentów.

Jak używa ich MassTransit

MassTransit automatycznie mapuje typy komunikatów na exchange i kolejki. Send kieruje komunikat do kolejki (polecenie), a Publish do exchange, dzięki czemu kolejka każdego subskrybującego konsumenta otrzymuje kopię (zdarzenie).

Rozdzielenie usług w praktyce

Usługa zamówień publikuje OrderPlaced i przechodzi do dalszej pracy. Niezależnie od niej usługa pocztowa i usługa analityczna odbierają ten komunikat. Dodanie nowego subskrybenta nie wymaga zmiany w producencie.

Gwarancje dostarczenia

Brokerzy zazwyczaj oferują dostarczanie co najmniej raz: po błędzie komunikat może zostać dostarczony ponownie. Konsumenci powinni zatem być idempotentni, aby wielokrotne przetworzenie tego samego komunikatu było bezpieczne.

Kiedy używać komunikatów

Warto użyć komunikacji za pomocą komunikatów, gdy praca może odbywać się asynchronicznie, gdy potrzebują Państwo rozdzielić usługi lub gdy trzeba absorbować nagłe wzrosty obciążenia. W przypadku natychmiastowej odpowiedzi w modelu żądanie–odpowiedź prostsze może być bezpośrednie wywołanie API.

Szybkie sprawdzenie

Proszę sprawdzić znajomość koncepcji komunikacji za pomocą komunikatów.

Podsumowanie

Komunikacja asynchroniczna za pomocą komunikatów rozdziela usługi za pośrednictwem brokera. MassTransit abstrahuje brokerów takich jak RabbitMQ. Polecenia (wyrażające działanie, z jednym handlerem) są wysyłane do kolejki, a zdarzenia (w czasie przeszłym, z wieloma handlerami) są publikowane w exchange, który rozsyła je do subskrybentów. Należy oczekiwać dostarczania co najmniej raz, dlatego konsumenci powinni być idempotentni.

Często zadawane pytania

Czy lekcja „Koncepcje komunikacji” jest bezpłatna?

Tak — pełny tekst „Koncepcje komunikacji” 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 C# Academy, przejdź na CoddyKit PRO. Kurs C# Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Koncepcje komunikacji”?

Poznaj polecenia, zdarzenia i kolejki. Ćwiczysz C# Academy 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ąć C# Academy?

Nie wymagamy żadnego doświadczenia. C# Academy 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 1 z 4.

Ile czasu zajmuje lekcja „Koncepcje komunikacji”?

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 C# Academy?

Tak. Każda lekcja C# Academy 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

  1. Koncepcje komunikacji
  2. Produkcja i konsumpcja komunikatów
  3. Sagi i przepływy pracy
  4. Obsługa błędów i ponawianie prób
← Powrót do C# Academy