Hunting rabbits and event-  driven programming      Marjan Nikolovski
{ Agenda ‹   Basics and introduction to EDA ‹   Messaging patterns ‹   Internal and cross boundaries messaging ‹   Product...
{ Basics and introduction to EDA ‹ So what is an event ?    ‹   Event-driven behavior as part of our life ‹ What is EDA ? ...
{ So what is an event ? ‹   An event is an occurrence within a particular system or domain; it is     something that has h...
Event-driven behavior as part of{ our life      On new                  On      Wait for                    Go       salar...
{ What is EDA ? ‹   WIKI says: Event-driven architecture (EDA) is a software architecture     pattern promoting the produc...
Event-driven behavior as part of{ out apps                                  Observation              Active               ...
Current apps situation{ Request – response scenario
Current apps situation{ Request – response scenario
Current apps situation{ Pull (time based)scenario
To event-driven behavior situation{ Event scenario                              Don’t call us, we will                    ...
To event-driven behavior situation{ Event scenario
To event-driven behavior situation{ Event scenario
To event-driven behavior situation{ Event scenario
How can we establish event-driven{ architecture ? ‹   Good analyses      ‹   Stick to Open/Closed and Single responsibilit...
Layering introduced in event-{ driven apps ‹   Event publisher      ‹   Any client that generates events ‹   Event mediati...
Layering introduced in event-{ driven apps                        and channels                                       Consu...
Why we want to build event-driven{ apps? ‹   Pros      ‹   Exploit parallelism      ‹   Better system design - each event ...
{ Messaging patterns ‹   Publish-subscribe aka PubSub ‹   Topic based PubSub ‹   Point-to-point ‹   Request-reply ‹   Stor...
{ Publish-subscribe aka PubSub                                            Publisher                                      P...
{ Topic based PubSub                                                    Topic                      Consumes the event     ...
{ Point-to-point   Publisher       Queue   Subscriber
{ Request-reply                                  Subscriber   Publisher/Subscriber   Topic   Subscriber                   ...
{ Store and forward                                     Subscriber      Publisher/Subscriber   Topic   Subscriber         ...
{ Pipeline  Publisher   Topic   Subscriber   Subscriber   Subscriber
Internal and cross boundaries{ messaging ‹   Internal messaging via in memory event dispatcher      ‹   Decorate the subsc...
{ Products and technologies ‹   XMPP based products     ‹   Ejabberd ‹   AMQP based products     ‹   RabbitMQ     ‹   Open...
{ AMQP protocol ‹   Advanced message queuing protocol for message-oriented middleware      ‹   Queuing      ‹   Routing (p...
{                               RabbitMQ Broker    Publisher                           Binding            Queue   Consumer...
{ Message exchange                        Topic                       Fanout         Direct   Exchange   Bindings   System...
{
Questions?• Complete electronic evaluation forms  on the computers in the hall and  enter to win!   – Telerik Ultimate Col...
Yellow.4 marjan nikolovski hunting rabbits and event-driven programming
Yellow.4 marjan nikolovski hunting rabbits and event-driven programming
Yellow.4 marjan nikolovski hunting rabbits and event-driven programming
Yellow.4 marjan nikolovski hunting rabbits and event-driven programming
Upcoming SlideShare
Loading in …5
×

Yellow.4 marjan nikolovski hunting rabbits and event-driven programming

1,571 views

Published on

Solving problems with event-driven architecture, pub-sub concepts, cross-boundaries event-driven communication and building event-driven applications with RabbitMQ in .NET Covered technologies: .NET 4.0, RabbitMQ

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,571
On SlideShare
0
From Embeds
0
Number of Embeds
17
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Predictive processing – complex event processing, detecting patterns, detecting frauds, eliminate eventsDynamic operational behavior – content driven event deliveryInformation dissemination – right message in the right time to the right person
  • Yellow.4 marjan nikolovski hunting rabbits and event-driven programming

    1. 1. Hunting rabbits and event- driven programming Marjan Nikolovski
    2. 2. { Agenda ‹ Basics and introduction to EDA ‹ Messaging patterns ‹ Internal and cross boundaries messaging ‹ Products and technologies ‹ Demo
    3. 3. { Basics and introduction to EDA ‹ So what is an event ? ‹ Event-driven behavior as part of our life ‹ What is EDA ? ‹ Event-driven behavior as part of out apps ‹ Current apps situation ‹ To event-driven behavior situation ‹ How can we establish event-driven architecture ? ‹ Layering introduced in event-driven apps ‹ Why we want to build event-driven apps?
    4. 4. { So what is an event ? ‹ An event is an occurrence within a particular system or domain; it is something that has happened, or is contemplated as having happened in that domain. ‹ Characteristics ‹ Unique ‹ Time relevant
    5. 5. Event-driven behavior as part of{ our life On new On Wait for Go salary account next shopping received empty salary
    6. 6. { What is EDA ? ‹ WIKI says: Event-driven architecture (EDA) is a software architecture pattern promoting the production, detection, consumption of, and reaction to events. Event Event Event producer processor consumer
    7. 7. Event-driven behavior as part of{ out apps Observation Active Predictive diagnostics processing Event- driven apps Dynamic Information operational dissemination behavior
    8. 8. Current apps situation{ Request – response scenario
    9. 9. Current apps situation{ Request – response scenario
    10. 10. Current apps situation{ Pull (time based)scenario
    11. 11. To event-driven behavior situation{ Event scenario Don’t call us, we will call you
    12. 12. To event-driven behavior situation{ Event scenario
    13. 13. To event-driven behavior situation{ Event scenario
    14. 14. To event-driven behavior situation{ Event scenario
    15. 15. How can we establish event-driven{ architecture ? ‹ Good analyses ‹ Stick to Open/Closed and Single responsibility principles ‹ Define the domain ‹ Define: ‹ Who are event producers ‹ Who are event consumers ‹ Introduce event dispatcher (the mediator) ‹ Determine event channel ‹ Everyone do what they are supposed to do, everything else they delegate to other involved parties via the event dispatcher
    16. 16. Layering introduced in event-{ driven apps ‹ Event publisher ‹ Any client that generates events ‹ Event mediation and Event channels ‹ Event distribution ‹ Events transport via memory, raw, xml, rest, protobuff … ‹ Event subscriber ‹ Any client that consumes the events ‹ Choose event processing strategy ‹ Simple processing (forwarding) ‹ Event streaming (creating events from streamed data and send it to subscribers) ‹ Complex event processing (pattern detection on events)
    17. 17. Layering introduced in event-{ driven apps and channels Consumers Mediation Producers
    18. 18. Why we want to build event-driven{ apps? ‹ Pros ‹ Exploit parallelism ‹ Better system design - each event has its own processor (single responsibility) ‹ Reduce dependencies in the system ‹ Reduce coupling ‹ Easier testing ‹ Real time monitoring ‹ Scalability ‹ Maintainability ‹ Cons ‹ Highly abstract concept
    19. 19. { Messaging patterns ‹ Publish-subscribe aka PubSub ‹ Topic based PubSub ‹ Point-to-point ‹ Request-reply ‹ Store and forward ‹ Pipeline
    20. 20. { Publish-subscribe aka PubSub Publisher Publish an event Topic Consumes the event Consumes the event Subscriber Subscriber
    21. 21. { Topic based PubSub Topic Consumes the event Consumes the event Subscriber Subscriber Consumes the event Subscriber Subtopic Publish an event Publisher
    22. 22. { Point-to-point Publisher Queue Subscriber
    23. 23. { Request-reply Subscriber Publisher/Subscriber Topic Subscriber Subscriber
    24. 24. { Store and forward Subscriber Publisher/Subscriber Topic Subscriber Subscriber Data
    25. 25. { Pipeline Publisher Topic Subscriber Subscriber Subscriber
    26. 26. Internal and cross boundaries{ messaging ‹ Internal messaging via in memory event dispatcher ‹ Decorate the subscribers in the system ‹ Decorate the receivers in the system ‹ Develop custom event dispatcher that will dispatch the producer events to the consumer ‹ Cross boundaries messaging via ‹ Any full-duplex communication ‹ Web/Url callbacks ‹ Web based push notifications - long pooling AJAX request ‹ Queue ‹ Custom messaging software
    27. 27. { Products and technologies ‹ XMPP based products ‹ Ejabberd ‹ AMQP based products ‹ RabbitMQ ‹ OpenAMQP ‹ Apache QPID ‹ STOMP based products ‹ ActiveMQ ‹ JMS ‹ Other ‹ MSMQ ‹ Azure Service Bus ‹ ZeroMQ
    28. 28. { AMQP protocol ‹ Advanced message queuing protocol for message-oriented middleware ‹ Queuing ‹ Routing (point to point, PubSub) ‹ Reliable ‹ Secure ‹ Interoperability on protocol level instead of API level ‹ So how does it work behind the scenes: ‹ Exchanges ‹ Queues ‹ Bindings ‹ Messages
    29. 29. { RabbitMQ Broker Publisher Binding Queue Consumer Exchange Publisher Exchange Binding Queue Consumer Publisher
    30. 30. { Message exchange Topic Fanout Direct Exchange Bindings System.Logs.* System.Interupts.* SomeKey Q1 Q2 Q3 Q4 Q5 Q6 Queues
    31. 31. {
    32. 32. Questions?• Complete electronic evaluation forms on the computers in the hall and enter to win! – Telerik Ultimate Collection – RedGate .NET Reflector VSPro – ComponentOne Enterprise Studio Suite – Pluralsight yearly subscriptions – CodeSmith Tools Generator Pro Personal – JetBrains ReSharper – Semos Education Training Voucher – and many more…

    ×