Your SlideShare is downloading. ×
Yellow.4 marjan nikolovski hunting rabbits and event-driven programming
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

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

1,285
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 …

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,285
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
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
  • Transcript

    • 1. Hunting rabbits and event- driven programming Marjan Nikolovski
    • 2. { Agenda ‹ Basics and introduction to EDA ‹ Messaging patterns ‹ Internal and cross boundaries messaging ‹ Products and technologies ‹ Demo
    • 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. { 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. Event-driven behavior as part of{ our life On new On Wait for Go salary account next shopping received empty salary
    • 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. Event-driven behavior as part of{ out apps Observation Active Predictive diagnostics processing Event- driven apps Dynamic Information operational dissemination behavior
    • 8. Current apps situation{ Request – response scenario
    • 9. Current apps situation{ Request – response scenario
    • 10. Current apps situation{ Pull (time based)scenario
    • 11. To event-driven behavior situation{ Event scenario Don’t call us, we will call you
    • 12. To event-driven behavior situation{ Event scenario
    • 13. To event-driven behavior situation{ Event scenario
    • 14. To event-driven behavior situation{ Event scenario
    • 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. 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. Layering introduced in event-{ driven apps and channels Consumers Mediation Producers
    • 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. { Messaging patterns ‹ Publish-subscribe aka PubSub ‹ Topic based PubSub ‹ Point-to-point ‹ Request-reply ‹ Store and forward ‹ Pipeline
    • 20. { Publish-subscribe aka PubSub Publisher Publish an event Topic Consumes the event Consumes the event Subscriber Subscriber
    • 21. { Topic based PubSub Topic Consumes the event Consumes the event Subscriber Subscriber Consumes the event Subscriber Subtopic Publish an event Publisher
    • 22. { Point-to-point Publisher Queue Subscriber
    • 23. { Request-reply Subscriber Publisher/Subscriber Topic Subscriber Subscriber
    • 24. { Store and forward Subscriber Publisher/Subscriber Topic Subscriber Subscriber Data
    • 25. { Pipeline Publisher Topic Subscriber Subscriber Subscriber
    • 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. { 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. { 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. { RabbitMQ Broker Publisher Binding Queue Consumer Exchange Publisher Exchange Binding Queue Consumer Publisher
    • 30. { Message exchange Topic Fanout Direct Exchange Bindings System.Logs.* System.Interupts.* SomeKey Q1 Q2 Q3 Q4 Q5 Q6 Queues
    • 31. {
    • 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…