230 likes | 439 Views
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ść.
E N D
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
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
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)
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.
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