RabbitMQ. Tomáš Jecha (MVP) jechtom Školení vývojářů Články a diskuzní fóra

Podobné dokumenty
Java Message Service (JMS) Martin Ptáček, KOMIX s.r.o.

Instalace a konfigurace web serveru. WA1 Martin Klíma

TwinCAT IoT Řešení pro průmysl 4.0

Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA

Komunikace systémů pomocí Hradec Králové

Novinky v ASP.NET MVC6

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

Požadavky pro výběrová řízení TerraBus ESB/G2x

w w w. u l t i m u m t e c h n o l o g i e s. c z Infrastructure-as-a-Service na platformě OpenStack

Tvorba informačních systémů

Michal Krátký, Miroslav Beneš

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Microsoft Azure Workshop

Úvod do Web Services

Identifikátor materiálu: ICT-3-03

Virtualizace jako nástroj snížení nákladů. Periodické opakování nákladů nové verze Licence na pevný počet klientů

UAI/612 - Cloudová Řešení. Technologie

SOAP & REST služby. Rozdíly, architektury, použití

X33EJA Web Services. Martin Ptáček, KOMIX s.r.o.

Cobbler, Puppet, Func

Životní cyklus IT systémů

Vývoj Internetových Aplikací

Alcatel-Lucent VitalQIP DNS/DHCP & IP Management Software

Monitoring ArcGIS systémů Hromadné řízení ArcGIS serverů

FORPSI Cloud Computing Virtuální datacentrum v cloudu

Internet Information Services (IIS) 6.0

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

IBM Cloud computing. Petr Leština Client IT Architect. Jak postavit enterprise cloud na klíč IBM Corporation

Virtualizační platforma ovirt

WCF. IW5 - Programování v.net a C# WCF

Platební systém XPAY [

9. Sítě MS Windows. Distribuce Windows. Obchodní označení. Jednoduchý OS pro osobní počítače, pouze FAT, základní podpora peer to peer sítí,

Automatizace správy linuxové infrastruktury pomocí Katello a Puppet LinuxDays

MQTT

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

Novinky v oblasti SAP Mobility. Martin Zikmund, Presale Mobility Platforms Miroslav Řehoř, Account Executive

Vzdálený přístup k počítačům

Brno. 30. května 2014

4. Síťová vrstva. Síťová vrstva. Počítačové sítě I. 1 (6) KST/IPS1. Studijní cíl. Představíme si funkci síťové vrstvy a jednotlivé protokoly.

O autorech 13 O odborném korektorovi 13. Poděkování 15 Úvod 17. Cílová skupina této knihy 17 Témata této knihy 17

Ostrava. 16. dubna 2014

STUDIJNÍ MATERIÁL PRO TECHNICKOU CERTIFIKACI ESET Server Security, Serverové produkty

Novinky v Azure pro webové vývojáře

OpenNebula pro začátečníky SUT Tomáš Kukrál

VirtualBox desktopová virtualizace. Zdeněk Merta

Případová studie migrace z Cisco ACE a další možnosti nasazení

1 Webový server, instalace PHP a MySQL 13

Nové jazykové brány do Caché. Daniel Kutáč

Cloud Computing IBM Corporation

ArcGIS Server 10.1/10.2

TFTP Trivial File Transfer Protocol

KAPITOLA 1 Instalace Exchange Server

Miroslav Holec. Software & Cloud Architect. Microsoft MVP: Microsoft Azure MCSD, MCSA, MTA. Zvyšujeme výkonnost aplikací s. (Azure) Redis Cache

Kubernetes Azure Service Fabric

SSL Secure Sockets Layer

ISZR Referenční agent.net

Uživatelská příručka

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Systémová administrace portálu Liferay

Hadoop a HDFS. Bc. Milan Nikl

Inovace bakalářského studijního oboru Aplikovaná chemie

Č á s t 1 Příprava instalace

Virtuální datacentrum na ovirt způsob

Ing. Michal Martin. MQTT na zařízeních Weintek

MASSIV. Middleware pro tvorbu online her

Internet věcí do škol!

7. Aplikační vrstva. Aplikační vrstva. Počítačové sítě I. 1 (5) KST/IPS1. Studijní cíl. Představíme si funkci aplikační vrstvy a jednotlivé protokoly.

Prototyping konfigurace linuxových serverů. horizontální škálování Deltacloud API

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

Inovace výuky prostřednictvím šablon pro SŠ

2012 (červen) Microsoft Sharepoint Portal Server. Microsoft Live Communications Server 2003 Řešení pro online komunikaci. Microsoft Exchange

Semestrální projekt do předmětu SPS

Hypertext Transfer Protocol (HTTP/1.1 RFC 2616) Počítačové sítě Pavel Šinták

Inteligentní řízení strojů s portfoliem u-mation Řešení pro automatizaci a digitalizaci Let s connect. Automatizace a digitalizace

Messenger. Novell 1.0 UMÍSTĚNÍ DOKUMENTACE K PROGRAMU NOVELL MESSENGER. STRUČ NÁ ÚVODNÍ PŘ ÍRUČ KA

API pro volání služby kurzovního lístku KB

POČÍTAČOVÉ SÍTĚ A KOMUNIKACE OBOR: INFORMAČNÍ TECHNOLOGIE

STUDIJNÍ MATERIÁL PRO TECHNICKOU CERTIFIKACI ESET Business Edition, ESET Remote Administrator

1. Webový server, instalace PHP a MySQL 13

Site - Zapich. Varianta 1

Knot DNS Resolver. Modulární rekurzivní resolver. Karel Slaný

NAS 323 NAS jako VPN Server


VÝZVA K PODÁNÍ NABÍDKY. Ukládání, zálohování a archivace dat

VLAN Membership Policy Server a protokol VQP Dynamické přiřazování do VLANů.

ASP.NET Web API. Tomáš Herceg Microsoft MVP (ASP.NET)

Inovované řešení VDT s plynem OTE-COM

Server-side technologie pro webové aplikace

The Locator/ID Separation Protocol (LISP)

POWERSHELL. Desired State Configuration (DSC) Lukáš Brázda MCT, MCSA, MCSE

Protokoly: IP, ARP, RARP, ICMP, IGMP, OSPF

spolupráce více systémů. . Pro zajištění služby je používáno více aplikačních protokolů, např.: DNS SMTP.

RESTful API TAMZ 1. Cvičení 11

Česká pošta, s.p. na Linuxu. Pavel Janík open source konzultant

ArcGIS Server 10. Řešení pro sdílení geodat

Compatibility List. GORDIC spol. s r. o. Verze

Michal Vávra FI MUNI

Lukáš Kubis. MSP pro VŠB-TU Ostrava

Řešení integrace Profinit ESB. Michal Bureš

Obsah PODĚKOVÁNÍ...11

Transkript:

RabbitMQ Tomáš Jecha (MVP) tomas@jecha.net jechtom www.jecha.net Školení vývojářů www.dotnetcollege.cz Články a diskuzní fóra www.vbnet.cz

Program Úvod, instalace, konfigurace Fronty, publikace a čtení zpráv Pokročilé routování zpráv Demo implementace do stávající aplikace Pluginy Další postupy

ÚVOD, INSTALACE, KONFIGURACE

RabbitMQ Open source message broker Pod hlavičkou VMware Multiplatformní Windows, Linux / Unix, Mac OS X Napsané v jazyce Erlang Podpora řady vývojářských platforem

Komunikace se serverem Klienti (oficiálně):.net, Java, Erlang Klienti (neoficiálně) Ruby, Python, PHP, Perl, C/C++, Lisp, Haskell, Ocaml, Go, Amazon EC2 Protokoly: AMQP+ (0.9.1) STOMP (1.0, 1.1, 1.2) Management REST HTTP API

Advanced Message Queuing Protocol Standardizovaný, otevřený (www.amqp.org) Microsoft, VMware, Cisco, Red Hat Binární protokol pro bezpečný a spolehlivý přenos zpráv Implementován například: Windows Azure Service Bus, ApacheMQ, StormMQ RabbitMQ verze 0.9.1 + extenze

Instalace Erlang Windows Binary File Erlang runtime (Erricson) RabbitMQ Server pro Windows Serverová windows služba Základní sada pluginů Konzolové příkazy na správu

Konfigurace a správa Příkazy: rabbitmqctl.bat Hlavní konfigurace (uživatelé, zabezpečení, cluster...) rabbitmq-plugins.bat Povolování / zakazování pluginů rabbitmq-server.bat Standalone server rabbitmq-service.bat Správa serveru jako Windows služby Environment variables (RABBITMQ_BASE) Konfigurační soubory Web management plugin (http://localhost:15672/)

demo Instalace a konfigurace Web management plugin Konfigurace permissions

Architektura RabbitMQ RabbitMQ Server Client Publisher Publish Exchange Routing Queue Consume Client Consumer

Exchanges Fronta pro předávání zpráv Příjímá zprávy od: Klientů (publisher) Jiných exchanges Zpráva je vyřazena při: Předání všem odpovídajícím cílům Vlastnosti: Binding kam zprávy předávat? Type (fanout, direct, topic, headers) Durable/Transient Internal, Alternate Exchange Custom properties

Queues Fronta zpráv Přijímá zprávy od Exchanges Zpráva je vyřazena při: Potvrzení/odmítnutí konzumeterem Vypršení TTL Vlastnosti: Durable/Transient TTL, Dead Letter Exchange, Auto Delete Custom properties

Zpráva Směrování Exchange RouteKey Properties System properties (DeliveryMode, CorrelationId, ApplicationId...) Custom properties Obsah

FRONTY, PUBLIKACE A ČTENÍ ZPRÁV

Defaultní Exchange Zasílání zpráv přímo do front Automaticky vyhledá front podle RouteKey zprávy Vhodné pro jednodušší scénáře Není potřeba Exchange vytvářet nebo konfigurovat, stačí založit frontu Jméno: (empty string)

Default Exchange RabbitMQ Server Client Publisher A; RouteKey=Q1 B; RouteKey=Q2 C; RouteKey=Q3 Publish Default Exchange Queue Q1 A; RouteKey=Q1 Queue Q2 B; RouteKey=Q2

demo Nová fronta Publikace zpráv C#

Další vlastnosti zpráv Delivery mode 1 = Non-persistent; 2 = Persistent AppId Identifikátor zdroje CorrelationId Párování zpráv (například RPC volání) Reply To Jméno exchange pro odpověď (RPC) Content Encoding & Content Type Informace o obsah zprávy

Konzumace zpráv Způsob doručení: Pull příkaz Get, získá 1 zprávu Push příkaz Consume, přihlášení k odběru Potvrzování zpráv Bez potvrzení (noack=true) Zpráva je po doručení považována za zpracovanou S potvrzením (noack=false) Zpráva je po doručení ve stavu nepotvrzena a čeká se na Ack / Nack (Reject) Pokud zprávu zamítneme, lze je: Zabít (requeue=false) Nebo vrátit do fronty (requeue=true)

demo Konzumace zpráv Použití čtení Pull vs Push Potvrzování / odmítání zpráv

POKROČILÉ ROUTOVÁNÍ ZPRÁV

Typy Exchanges Fanout Direct Topics Headers

Typy Exchanges Fanout Distribuce všem bindovaným odběratelům Direct Topics Headers

Fanout Exchange RabbitMQ Server Client Publisher Publish Fanout Exchange Queue Q1 A B C A B C Queue Q2 A B C

demo Fanout Exchange

Typy Exchanges Fanout Direct Rozhoduje parametr zprávy RouteKey Bude odeslána routováním, kterém má nastavený shodný RouteKey Topics Headers

Direct Exchange RabbitMQ Server Client Publisher A; RK=first B; RK=first C; RK=second D; RK=other Publish Direct Exchange Queue Q1 Queue Q2 A; RK=first B; RK=first C; RK=second

demo Direct Exchange

Typy Exchanges Fanout Direct Topics Podobně jako u Direct rozhoduje parametr zprávy RouteKey Zástupné znaky: * = libovolné jedno slovo (oddělená tečkama) # = žádné nebo více libovolných slov Headers

Topics Exchange RabbitMQ Server Client Publisher A; RK=color.blue Publish B; RK=color.red.dark C; RK=animal.dog D; RK=animal.dog.x Topics Exchange Queue Q1 A; RK=color.blue B; RK=color.red.dark Queue Q2 C; RK=animal.dog

demo Topics Exchange

Typy Exchanges Fanout Direct Topics Headers Pokročilejší routování podle libovolných vlastností zprávy (ne jen podle RouteKey)

DEMO IMPLEMENTACE DO STÁVAJÍCÍ APLIKACE

Proč používat fronty? Aplikace spolu nekomunikují přímo Technologická nezávislost Výpadek aplikace nemusí způsobit výpadek celé služby Bezpečnost Možnost opakovat události

Modelová aplikace Nová objednávka E-shop Order Service Mail Service DB MAIL SERVER

demo Stávající implementace

Modelová aplikace E-shop Nová objednávka Order processor Order Service Impl Mail Sender Mail Service Impl Order Service RabbitMQ DB Mail Service RabbitMQ MAIL SERVER Order Queue Mail Queue RabbitMQ

demo Implementace

PLUGINY

Pluginy Serverové: Management Plugin Webový interface STOMP Simple Text Messaging Protocol Autentifikace pomocí LDAP SSL komunikace

Federation Plugin Nový typ exchange Federation konzumuje zprávy vložené do vzdálených Upstream exchanges RabbitMQ Server #1 RabbitMQ Server #2 Publish Upstream Exchange Upstream link Federation Exchange Routing Queue

Shovel Plugin Přehazuje zprávy z jedné fronty do libovolného exchange na druhém brokeru Podobný jako Federation plugin, jen na nižší úrovni RabbitMQ Server #1 RabbitMQ Server #2 Queue Consume Shovel plugin Publish Exchange

DALŠÍ POSTUPY

RabbitMQ.ServiceModel WCF transportní vrstva pomocí front Lze použít pouze na synchronní volání (služba musí být v době volání online) Používá se CorrelationId a Reply_To Client RabbitMQ Server Service Publish request Consume request Temporary Queue #1 Temporary Queue #2 Consume request Publish response

Dead Letter Exchange Dead Letter je zpráva ve frontě, která by měla zaniknout z důvodu: Expirace (TTL) Nebo odmítnutí klientem (rejected) Lze nastavit vlastnosti: x-dead-letter-exchange x-dead-letter-routing-key Událost se následně směruje do vybrané exchange Do vlastností se přidají informace

demo Dead Letter Exchange

Clustering RabbitMQ podporuje clusterování Konfigurace nodů je sjednocená Fronty v clusteru jsou mirrorované z jednoho mastera na: Všechny nody Nebo konkrétní nody Nebo určitý počet nodů Nebo nejsou mirrorované vůbec Pouze do LAN - výpadky spojení nenese dobře

Virtual Hosts Logicky rozděluje objekty v brokeru Každý virtual host může obsahovat vlastní: Queues Exchanges Konfiguraci zabezpečení Identifikován jménem Defaultně pouze 1 virtual host /

Kdo používá Erlang & RabbitMQ? Erlang: Facebook chat CouchDB GitHub Amazon SimpleDB RabbitMQ: VMware cloudové a virtualizační systémy NASA - NEBULA Cloud Computing Platform Google Rocksteady projekt Microsoft, AT&T, Mozzila, BBC, Digg

Další zdroje RabbitMQ - www.rabbitmq.com AMQP (protocol) www.amqp.org Erlang (language) www.erlang.org Kurz C115 dotnetcollege.cz

Tomáš Jecha (MVP) tomas@jecha.net jechtom www.jecha.net Školení vývojářů www.dotnetcollege.cz Články a diskuzní fóra www.vbnet.cz