Messaging w .NET
Agenda Messaging AMQP Podstawowa konfiguracja serwera RabbitMQ Publikowanie na kolejkę Przykładowy klient: Task queue Broadcast Subscribution
Czym jest messaging? Metoda komunikacji i wymiany wiadomości
Co nam daje messaging?
Integracja systemów
Skalowalność Giełda Rynki walutowe
Monitoring Przesył dużych ilości danych do wielu klientów naraz Przesył tych samych danych do wielu klientów na raz
Dostarczenie w odpowiedniej kolejności Systemy transakcyjne Systemy rozproszone Rozwiązania w chmurze
Nieznany adresat
Sens biznesowy? Decentralizacja systemu Brak ograniczeń co do technologii Uniezależnienie od jednego dostawcy oprogramowania?
Czym jest AMQP? Otwarty, ustandaryzowany protokół, nie API JMS – API Analogia: HTTP – internet, AMQP – messaging
Virtual Host Każdy host ma swoją przestrzeń nazw, zestaw exchange'y, kolejek i powiązań Możliwość adresowania różnych hostów w obrębie jednego serwera
Exchange, Binding, Queue Exchange a publisher Kolejka a publisher Exchange a kolejka Binding
Message Broker - Rabbit MQ Czym jest broker, jaka jest jego rola? przyjmowanie/wysyłanie wiadomości routing niezależny od języka bazujący na protokole AMQP (pluginy do XMTP, HTTP) Message Broker - Rabbit MQ
Konfiguracja Rabbit MQ
Publikowanie na kolejkę Właściwości kolejki: - Brak limitów wielkości - Wiadomości przechowywane tylko wewnątrz kolejki - Brak ograniczeń co do ilości klientów
Kolejki zadań Symulacja zadaniowości Message acknowledgment - co się dzieje gdy klient umiera Popularny problem - redelivery w przypadku odłączenia klienta (basicACK)
Kolejki zadań Message durability - co się dzieje po zerwaniu połączenia, jak nie zgubić wiadomości? Fair dispatch - równe obciążenie klientów
Publish/Subscribe 1. Exchange: fanout, direct, topic 2. Tymczasowe kolejki. 3. Binding.
Fanout Exchange - Broadcast
Routing – Direct Exchange Direct exchange (binding key = routing key) Emitowanie message'y
Topic Exchange * - zastępuje dokładnie jedno słowo # - zastępuje 0 lub więcej słów
RPC – Remote Procedure Call