SlideShare a Scribd company logo
© 2021 IBM Corporation
Reacting to an event-
driven world
Grace Jansen
Developer Advocate
@gracejansen27
Let’s get some coffee…
© 2021 IBM Corporation
Barista Example:
© 2021 IBM Corporation
Coffee Shop
Barista
Coffee Lovers
HTTP
HTTP
https://github.com/cescoffier/quarkus-coffeeshop-demo
Event Driven Architecture
© 2021 IBM Corporation
S1
S3
S2
S4
Event-driven messaging backbone
Microservice
publishing
events
Microservice
consuming
events
Event-driven messaging backbone
http://ibm.biz/AdvantagesOfEDA
Barista Example:
© 2021 IBM Corporation
Coffee Shop
Coffee Shop
Barista
Barista
Board
Coffee Lovers
Coffee Lovers
HTTP
Orders,
Queue
HTTP
HTTP
https://github.com/cescoffier/quarkus-coffeeshop-demo
Event
Backbone
© 2021 IBM Corporation
Apache Kafka is an open source, distributed
streaming platform
Stream history Immutable data Highly available
Scalable
Scalable
consumption
© 2021 IBM Corporation
Q: Is your coffee shop non-blocking and
highly responsive?
© 2021 IBM Corporation
Q: Is your microservice system non-
blocking and highly responsive?
© 2021 IBM Corporation
Q: Is your microservice system non-
blocking and highly responsive?
A:Yes I’m using Kafka!
© 2021 IBM Corporation
Q: Is your microservice system non-
blocking and highly responsive?
A:Yes I’m using Kafka!
Reactive systems
© 2021 IBM Corporation
Reactive Manifesto
© 2021 IBM Corporation
Message-Driven
Reactive Manifesto
© 2021 IBM Corporation
Events
“A signal emitted by a component upon
reaching a given state.”
© 2021 IBM Corporation
A message can contain an encoded
event in its payload.
Messages
“An item of data sent to a specific location.”
© 2021 IBM Corporation
Apache Kafka is an open source, distributed
streaming platform
Publish and subscribe to streams of
records
Store records in durable way
Process streams of records as they
occur
Barista Example:
© 2021 IBM Corporation
Coffee Shop
Barista
Board
Coffee Lovers
Orders,
Queue
HTTP
https://github.com/cescoffier/quarkus-coffeeshop-demo
Event
Backbone
Barista Example:
© 2021 IBM Corporation
Coffee Shop
Barista
Board
Coffee Lovers
Orders,
Queue
HTTP
https://github.com/cescoffier/quarkus-coffeeshop-demo
Event
Backbone
Barista Example:
© 2021 IBM Corporation
Coffee Shop
Barista
Board
Coffee Lovers
Orders,
Queue
HTTP
https://github.com/cescoffier/quarkus-coffeeshop-demo
Event
Backbone
Elastic
Message-Driven
Reactive Manifesto
© 2021 IBM Corporation
Barista Example:
© 2021 IBM Corporation
Coffee Shop
Barista
Board
Coffee Lovers
Orders,
Queue
HTTP
https://github.com/cescoffier/quarkus-coffeeshop-demo
Event
Backbone
Barista Example:
© 2021 IBM Corporation
Coffee Shop
Barista
Board
Coffee Lovers
Orders,
Queue
HTTP
https://github.com/cescoffier/quarkus-coffeeshop-demo
Event
Backbone
Barista Example:
© 2021 IBM Corporation
Coffee Shop
Barista
Board
Coffee Lovers
Orders,
Queue
HTTP
https://github.com/cescoffier/quarkus-coffeeshop-demo
Event
Backbone
Resilient
Elastic
Message-Driven
Reactive Manifesto
© 2021 IBM Corporation
Resilient
Elastic
Responsive
Message-Driven
Reactive Manifesto
© 2021 IBM Corporation
Resilient
Elastic
Responsive
Message-Driven
Reactive Manifesto
© 2021 IBM Corporation
Utilizing reactive
frameworks &
toolkits with Kafka
© 2021 IBM Corporation
Reactive Frameworks for
Kafka
MicroProfile Reactive Messaging
Vert.x Kafka Client
© 2021 IBM Corporation
Eclipse MicroProfile
© 2021 IBM Corporation
An open-source community specification for Enterprise
Java microservices
A community of:
individuals
organizations
vendors
MicroProfile 3.3 Stack
© 2021 IBM Corporation
Reactive Streams
Operators 1.1
GraphQL
1.0
Standalone Projects
JSON-B 1.0
JSON-P 1.1
CDI 2.0
Config 1.4
Fault
Tolerance 2.1
JWT
Propagation
1.1
Health
Check 2.2
Metrics 2.3
OpenTracing
1.3
Open API 1.1
JAX-RS 2.1 Rest Client 1.4
Reactive
Messaging 1.0
Context
Propagation
1.0
Reactive
Streams
Not a MicroProfile spec
MicroProfile Reactive Messaging
Application’s beans contain methods annotated with @Incoming and @Outgoing annotations
The annotated methods are connected by named channels
A channel is a name indicating which source or destination of messages is used. Channels are opaque Strings.
@Incoming and @Outgoing annotations are matched up by channel names
© 2021 IBM Corporation
What is Eclipse Vert.x?
Polyglot Tool-kit
Based on Reactor pattern
Runs on the JVM
Non-blocking
Event-driven
Includes distributed event-bus
Code is single-threaded
© 2021 IBM Corporation
Vert.x Demo App
© 2021 IBM Corporation
Demo app
© 2021 IBM Corporation
https://github.com/ibm-messaging/kafka-java-vertx-starter
Vert.x app
produce
consume
Demo app
© 2021 IBM Corporation
Vert.x app
websocket
produce
consume
https://github.com/ibm-messaging/kafka-java-vertx-starter
© 2021 IBM Corporation
https://github.com/ibm-messaging/kafka-java-vertx-starter
© 2021 IBM Corporation
Apache Kafka Java Client
© 2021 IBM Corporation
Vert.x Client
© 2021 IBM Corporation
Vert.x Client
© 2021 IBM Corporation
© 2021 IBM Corporation ibm.biz/ExperiencesWritingAReactiveKafkaApp
MicroProfile
Interactive Demo
© 2021 IBM Corporation
Skills Network Labs
© 2021 IBM Corporation
Interactive Demo
Utilising MicroProfile Reactive Messaging to create reactive
Java microservices
If you would like to follow along at the same time please go to the following link and select the “Creating
reactive Java microservices” Module
https://openliberty.skillsnetwork.site/cloud-native-java-
made-easy-microprofile-jakarta-ee
© 2021 IBM Corporation
Summary
Non-reactive + Kafka != reactive
Reactive characteristics and Kafka go hand
in hand
The open-source reactive community is on
hand to help!
© 2021 IBM Corporation
MicroProfile Reactive Labs
https://openliberty.io/guides/?search=reactive
© 2021 IBM Corporation
Reactive Systems Explained
© 2021 IBM Corporation
ibm.biz/ReactiveReport
Thank you
Grace Jansen | @gracejansen27
© 2021 IBM Corporation
Reactive resources:
https://ibm.biz/IntroToReactive
https://ibm.biz/GettingStartedWithReactive
Getting started with Kafka:
https://kafka.apache.org/quickstart
https://strimzi.io
Reactive Kafka libraries
https://vertx.io/docs/vertx-kafka-client/java/
https://github.com/eclipse/microprofile-reactive-
messaging
https://projectreactor.io/docs/kafka
https://github.com/akka/alpakka-kafka
Additional Slides
© 2021 IBM Corporation
Resilient
Elastic
Responsive
Message-Driven
Resiliency in Kafka
© 2021 IBM Corporation
Resilient
Topic A
Partition 1
Broker 1
Topic A
Partition 1
Offline Leader
© 2021 IBM Corporation
Resilient producers
Delivery guarantees:
At most once
At least once
Configuration:
Acks
Retries
© 2021 IBM Corporation
Resilient consumers
© 2021 IBM Corporation
0 1 2 3 4 5
Offset
Resilient
Elastic
Responsive
Message-Driven
Scalability in Kafka
© 2021 IBM Corporation
Scalability in Kafka
© 2021 IBM Corporation
Elasticity in Consumers
© 2021 IBM Corporation
Consumer Groups
© 2021 IBM Corporation
Consumer groupA
p0, offset 7
p1, offset 3
p2, offset 5
Topic
0 1 2 3
0 1 2 3 4 5
Partition 0
Partition 1
Partition 2
0 1 2 3 4 5 6 7
Consumer
Consumer
Consumer
Consumer
Consumer group B
p0, offset 7
p1, offset 3
p2, offset 5
Consumer
Consumer

More Related Content

What's hot (20)

PPTX
Breaking the Monolith
VMware Tanzu
 
PDF
The Beginner’s Guide To Spring Cloud
VMware Tanzu
 
PDF
12 factor app
Luís Bianchin
 
PPTX
12 factor app an introduction
Krishna-Kumar
 
PDF
Understanding MicroSERVICE Architecture with Java & Spring Boot
Kashif Ali Siddiqui
 
PPTX
Microservices architecture
Faren faren
 
PPTX
Going MicroServices with Net
David Revoledo
 
PDF
Cloud-Native Streaming and Event-Driven Microservices
VMware Tanzu
 
PDF
Resilient and Adaptable Systems with Cloud Native APIs
VMware Tanzu
 
PPTX
From a monolith to microservices + REST: The evolution of LinkedIn's architec...
Karan Parikh
 
PDF
12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...
Cloud Native Day Tel Aviv
 
PDF
TDD for Microservices
VMware Tanzu
 
PPTX
Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...
Cloud Native Day Tel Aviv
 
PDF
Debugging Complex Issues in Web Applications
VMware Tanzu
 
PPTX
REST and Microservices
Shaun Abram
 
PDF
Introduction to Reactive Streams and Reactor 2.5
Stéphane Maldini
 
PDF
Ingress? That’s So 2020! Introducing the Kubernetes Gateway API
VMware Tanzu
 
PDF
The 12 Factor App
rudiyardley
 
PDF
Introducing Spring Framework 5.3
VMware Tanzu
 
PDF
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...
VMware Tanzu
 
Breaking the Monolith
VMware Tanzu
 
The Beginner’s Guide To Spring Cloud
VMware Tanzu
 
12 factor app
Luís Bianchin
 
12 factor app an introduction
Krishna-Kumar
 
Understanding MicroSERVICE Architecture with Java & Spring Boot
Kashif Ali Siddiqui
 
Microservices architecture
Faren faren
 
Going MicroServices with Net
David Revoledo
 
Cloud-Native Streaming and Event-Driven Microservices
VMware Tanzu
 
Resilient and Adaptable Systems with Cloud Native APIs
VMware Tanzu
 
From a monolith to microservices + REST: The evolution of LinkedIn's architec...
Karan Parikh
 
12 Factor Serverless Applications - Mike Morain, AWS - Cloud Native Day Tel A...
Cloud Native Day Tel Aviv
 
TDD for Microservices
VMware Tanzu
 
Microservices: Why and When? - Alon Fliess, CodeValue - Cloud Native Day Tel ...
Cloud Native Day Tel Aviv
 
Debugging Complex Issues in Web Applications
VMware Tanzu
 
REST and Microservices
Shaun Abram
 
Introduction to Reactive Streams and Reactor 2.5
Stéphane Maldini
 
Ingress? That’s So 2020! Introducing the Kubernetes Gateway API
VMware Tanzu
 
The 12 Factor App
rudiyardley
 
Introducing Spring Framework 5.3
VMware Tanzu
 
Winning the Lottery with Spring: A Microservices Case Study for the Dutch Lot...
VMware Tanzu
 

Similar to Developer Week - Reacting to an event-driven world (20)

PPTX
JLove conference 2020 - Reacting to an Event-Driven World
Grace Jansen
 
PPTX
JavaBin: Reacting to an event driven world
Grace Jansen
 
PDF
Reacting to an Event-Driven World (Kate Stanley & Grace Jansen, IBM) Kafka Su...
confluent
 
PPTX
Virtual Meetup Sweden - Reacting to an event driven world
Grace Jansen
 
PPTX
JSpring Virtual 2020 - Reacting to an event-driven world
Grace Jansen
 
PPTX
GIDS Architecture Live: Reacting to an event-driven world
Grace Jansen
 
PPTX
VJUG - Reacting to an event driven world
Grace Jansen
 
PPTX
Jfokus - Reacting to an event-driven world
Grace Jansen
 
PPTX
DevNexus - Reacting to an event driven world
Grace Jansen
 
PDF
Reactive Microservices with Quarkus
Niklas Heidloff
 
PPT
Reactive java programming for the impatient
Grant Steinfeld
 
PDF
Building Serverless Apps with Kafka (Dale Lane, IBM) Kafka Summit London 2019
confluent
 
PDF
An intro to serverless and OpenWhisk for Kafka users
Dale Lane
 
PPTX
Reactive for the Impatient - Mary Grygleski
PolyglotMeetups
 
PDF
Revitalizing Aging Architectures with Microservices
Legacy Typesafe (now Lightbend)
 
PPTX
Event-driven microservices
Andrew Schofield
 
PDF
Event-driven Applications with Kafka, Micronaut, and AWS Lambda | Dave Klein,...
HostedbyConfluent
 
PPTX
Cloud native java workshop
Jamie Coleman
 
PDF
Event-driven Applications with Kafka, Micronaut, and AWS Lambda | Dave Klein,...
HostedbyConfluent
 
PDF
Reactive Programming for Real Use Cases
Alex Soto
 
JLove conference 2020 - Reacting to an Event-Driven World
Grace Jansen
 
JavaBin: Reacting to an event driven world
Grace Jansen
 
Reacting to an Event-Driven World (Kate Stanley & Grace Jansen, IBM) Kafka Su...
confluent
 
Virtual Meetup Sweden - Reacting to an event driven world
Grace Jansen
 
JSpring Virtual 2020 - Reacting to an event-driven world
Grace Jansen
 
GIDS Architecture Live: Reacting to an event-driven world
Grace Jansen
 
VJUG - Reacting to an event driven world
Grace Jansen
 
Jfokus - Reacting to an event-driven world
Grace Jansen
 
DevNexus - Reacting to an event driven world
Grace Jansen
 
Reactive Microservices with Quarkus
Niklas Heidloff
 
Reactive java programming for the impatient
Grant Steinfeld
 
Building Serverless Apps with Kafka (Dale Lane, IBM) Kafka Summit London 2019
confluent
 
An intro to serverless and OpenWhisk for Kafka users
Dale Lane
 
Reactive for the Impatient - Mary Grygleski
PolyglotMeetups
 
Revitalizing Aging Architectures with Microservices
Legacy Typesafe (now Lightbend)
 
Event-driven microservices
Andrew Schofield
 
Event-driven Applications with Kafka, Micronaut, and AWS Lambda | Dave Klein,...
HostedbyConfluent
 
Cloud native java workshop
Jamie Coleman
 
Event-driven Applications with Kafka, Micronaut, and AWS Lambda | Dave Klein,...
HostedbyConfluent
 
Reactive Programming for Real Use Cases
Alex Soto
 
Ad

More from Grace Jansen (20)

PPTX
JPrime_JITServer.pptx
Grace Jansen
 
PPTX
SwissJUG_15_factor_app.pptx
Grace Jansen
 
PPTX
SwissJUG_Bringing the cloud back down to earth.pptx
Grace Jansen
 
PPTX
ThroughTheLookingGlass_EffectiveObservability.pptx
Grace Jansen
 
PPTX
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earth
Grace Jansen
 
PPTX
Javaland_JITServerTalk.pptx
Grace Jansen
 
PPTX
JavaLand_To InstantOn and Beyond.pptx
Grace Jansen
 
PPTX
Jfokus_Bringing the cloud back down to earth.pptx
Grace Jansen
 
PPTX
FooConf23_Bringing the cloud back down to earth.pptx
Grace Jansen
 
PPTX
DevoxxBelgium_StatefulCloud.pptx
Grace Jansen
 
PPTX
UtrechtJUG_Exploring statefulmicroservices in a cloud-native world.pptx
Grace Jansen
 
PPTX
JCON_15FactorWorkshop.pptx
Grace Jansen
 
PPTX
JCON_Adressing the transaction challenge in a cloud-native world.pptx
Grace Jansen
 
PPTX
JavaZone_Addressing the transaction challenge in a cloud-native world.pptx
Grace Jansen
 
PPTX
JavaZone_Mother Nature vs Java – the security face off.pptx
Grace Jansen
 
PPTX
Boost developer productivity with EE, MP and OL (Devoxx Ukraine 22).pptx
Grace Jansen
 
PPTX
Addressing the transaction challenge in a cloud-native world Devoxx Ukraine 2022
Grace Jansen
 
PPTX
JBCNConf_Addressing_The_Transaction_Challenge_LRA.pptx
Grace Jansen
 
PDF
2022-Devnexus-StatefulMicroservices.pptx.pdf
Grace Jansen
 
PPTX
How to become a superhero without even leaving your desk!
Grace Jansen
 
JPrime_JITServer.pptx
Grace Jansen
 
SwissJUG_15_factor_app.pptx
Grace Jansen
 
SwissJUG_Bringing the cloud back down to earth.pptx
Grace Jansen
 
ThroughTheLookingGlass_EffectiveObservability.pptx
Grace Jansen
 
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earth
Grace Jansen
 
Javaland_JITServerTalk.pptx
Grace Jansen
 
JavaLand_To InstantOn and Beyond.pptx
Grace Jansen
 
Jfokus_Bringing the cloud back down to earth.pptx
Grace Jansen
 
FooConf23_Bringing the cloud back down to earth.pptx
Grace Jansen
 
DevoxxBelgium_StatefulCloud.pptx
Grace Jansen
 
UtrechtJUG_Exploring statefulmicroservices in a cloud-native world.pptx
Grace Jansen
 
JCON_15FactorWorkshop.pptx
Grace Jansen
 
JCON_Adressing the transaction challenge in a cloud-native world.pptx
Grace Jansen
 
JavaZone_Addressing the transaction challenge in a cloud-native world.pptx
Grace Jansen
 
JavaZone_Mother Nature vs Java – the security face off.pptx
Grace Jansen
 
Boost developer productivity with EE, MP and OL (Devoxx Ukraine 22).pptx
Grace Jansen
 
Addressing the transaction challenge in a cloud-native world Devoxx Ukraine 2022
Grace Jansen
 
JBCNConf_Addressing_The_Transaction_Challenge_LRA.pptx
Grace Jansen
 
2022-Devnexus-StatefulMicroservices.pptx.pdf
Grace Jansen
 
How to become a superhero without even leaving your desk!
Grace Jansen
 
Ad

Recently uploaded (20)

PDF
Why Are More Businesses Choosing Partners Over Freelancers for Salesforce.pdf
Cymetrix Software
 
PDF
MiniTool Power Data Recovery Crack New Pre Activated Version Latest 2025
imang66g
 
PDF
Enhancing Security in VAST: Towards Static Vulnerability Scanning
ESUG
 
PDF
10 posting ideas for community engagement with AI prompts
Pankaj Taneja
 
PPT
Brief History of Python by Learning Python in three hours
adanechb21
 
PDF
Supabase Meetup: Build in a weekend, scale to millions
Carlo Gilmar Padilla Santana
 
PPTX
Presentation about Database and Database Administrator
abhishekchauhan86963
 
PDF
System Center 2025 vs. 2022; What’s new, what’s next_PDF.pdf
Q-Advise
 
PPT
Activate_Methodology_Summary presentatio
annapureddyn
 
PPTX
Farrell__10e_ch04_PowerPoint.pptx Programming Logic and Design slides
bashnahara11
 
PDF
Enhancing Healthcare RPM Platforms with Contextual AI Integration
Cadabra Studio
 
PDF
SAP GUI Installation Guide for Windows | Step-by-Step Setup for SAP Access
SAP Vista, an A L T Z E N Company
 
PPTX
Contractor Management Platform and Software Solution for Compliance
SHEQ Network Limited
 
PDF
Applitools Platform Pulse: What's New and What's Coming - July 2025
Applitools
 
PPTX
Web Testing.pptx528278vshbuqffqhhqiwnwuq
studylike474
 
PPTX
Employee salary prediction using Machine learning Project template.ppt
bhanuk27082004
 
PDF
AWS_Agentic_AI_in_Indian_BFSI_A_Strategic_Blueprint_for_Customer.pdf
siddharthnetsavvies
 
PPTX
TRAVEL APIs | WHITE LABEL TRAVEL API | TOP TRAVEL APIs
philipnathen82
 
PPTX
Presentation about variables and constant.pptx
kr2589474
 
PDF
WatchTraderHub - Watch Dealer software with inventory management and multi-ch...
WatchDealer Pavel
 
Why Are More Businesses Choosing Partners Over Freelancers for Salesforce.pdf
Cymetrix Software
 
MiniTool Power Data Recovery Crack New Pre Activated Version Latest 2025
imang66g
 
Enhancing Security in VAST: Towards Static Vulnerability Scanning
ESUG
 
10 posting ideas for community engagement with AI prompts
Pankaj Taneja
 
Brief History of Python by Learning Python in three hours
adanechb21
 
Supabase Meetup: Build in a weekend, scale to millions
Carlo Gilmar Padilla Santana
 
Presentation about Database and Database Administrator
abhishekchauhan86963
 
System Center 2025 vs. 2022; What’s new, what’s next_PDF.pdf
Q-Advise
 
Activate_Methodology_Summary presentatio
annapureddyn
 
Farrell__10e_ch04_PowerPoint.pptx Programming Logic and Design slides
bashnahara11
 
Enhancing Healthcare RPM Platforms with Contextual AI Integration
Cadabra Studio
 
SAP GUI Installation Guide for Windows | Step-by-Step Setup for SAP Access
SAP Vista, an A L T Z E N Company
 
Contractor Management Platform and Software Solution for Compliance
SHEQ Network Limited
 
Applitools Platform Pulse: What's New and What's Coming - July 2025
Applitools
 
Web Testing.pptx528278vshbuqffqhhqiwnwuq
studylike474
 
Employee salary prediction using Machine learning Project template.ppt
bhanuk27082004
 
AWS_Agentic_AI_in_Indian_BFSI_A_Strategic_Blueprint_for_Customer.pdf
siddharthnetsavvies
 
TRAVEL APIs | WHITE LABEL TRAVEL API | TOP TRAVEL APIs
philipnathen82
 
Presentation about variables and constant.pptx
kr2589474
 
WatchTraderHub - Watch Dealer software with inventory management and multi-ch...
WatchDealer Pavel
 

Developer Week - Reacting to an event-driven world

Editor's Notes

  • #4: Use this as an example -> there are plenty of existing demos showing that using event driven vs e.g. http is much better Clement’s session C3 – 4pm It is possible to do http requests without blocking the thread, but even with that switch you are still approaching from a request/response perspective
  • #5: Event Driven Architecture (EDA) is a popular architectural approach that enables events to be placed at the heart of our systems Consists of Events Events are records of something that has happened, a change in state - immutable and are ordered in sequence of their creation. Interested parties can be notified of these state changes by subscribing to published events and then acting on information using their chosen business logic. An event-driven architecture, refers to a system of loosely coupled microservices that exchange information between each other through the production and consumption of events.
  • #6: Use this as an example -> there are plenty of existing demos showing that using event driven vs e.g. http is much better
  • #8: No! This isn’t reasonable! Kafka is a good tool, but it isn’t enough to have a good tool, you need to use it in the right way You also need to think about your applications and other services, Kafka isn’t your whole architecture – integration between components is key! Can we just use Kafka to create a Reactive application? Short answer: NO While Kafka look after the messaging part, we still need a Reactive Microservice implementation, for instance, using the actor model to replace thread synchronization with queued message processing or the supervisor model to handle failures and self-healing. We definitely need both Akka and Kafka to build Reactive Microservices based responsive, resilient and elastic systems.
  • #9: No! This isn’t reasonable! Kafka is a good tool, but it isn’t enough to have a good tool, you need to use it in the right way You also need to think about your applications and other services, Kafka isn’t your whole architecture – integration between components is key! Can we just use Kafka to create a Reactive application? Short answer: NO While Kafka look after the messaging part, we still need a Reactive Microservice implementation, for instance, using the actor model to replace thread synchronization with queued message processing or the supervisor model to handle failures and self-healing. We definitely need both Akka and Kafka to build Reactive Microservices based responsive, resilient and elastic systems.
  • #10: No! This isn’t reasonable! Kafka is a good tool, but it isn’t enough to have a good tool, you need to use it in the right way You also need to think about your applications and other services, Kafka isn’t your whole architecture – integration between components is key! Can we just use Kafka to create a Reactive application? Short answer: NO While Kafka look after the messaging part, we still need a Reactive Microservice implementation, for instance, using the actor model to replace thread synchronization with queued message processing or the supervisor model to handle failures and self-healing. We definitely need both Akka and Kafka to build Reactive Microservices based responsive, resilient and elastic systems.
  • #11: No! This isn’t reasonable! Kafka is a good tool, but it isn’t enough to have a good tool, you need to use it in the right way You also need to think about your applications and other services, Kafka isn’t your whole architecture – integration between components is key! Can we just use Kafka to create a Reactive application? Short answer: NO While Kafka look after the messaging part, we still need a Reactive Microservice implementation, for instance, using the actor model to replace thread synchronization with queued message processing or the supervisor model to handle failures and self-healing. We definitely need both Akka and Kafka to build Reactive Microservices based responsive, resilient and elastic systems.
  • #12: So Kafka claims to have scalable consumption and resiliency, do I just get that for free when I start Kafka? How does it work?
  • #13: Talking about message driven vs event driven
  • #14: Talking about message driven vs event driven
  • #16: Open sourced distributed streaming platform, often being adopted as the “de-facto” event streaming technology Arrived at the right time, captured mindshare among developers and so exploded in popularity Kafka has deliberately moved away from the word “events”… instead uses records now
  • #17: Use this as an example -> there are plenty of existing demos showing that using event driven vs e.g. http is much better
  • #18: Use this as an example -> there are plenty of existing demos showing that using event driven vs e.g. http is much better
  • #19: Use this as an example -> there are plenty of existing demos showing that using event driven vs e.g. http is much better
  • #20: Talking about message driven vs event driven
  • #21: Use this as an example -> there are plenty of existing demos showing that using event driven vs e.g. http is much better
  • #22: Use this as an example -> there are plenty of existing demos showing that using event driven vs e.g. http is much better
  • #23: Use this as an example -> there are plenty of existing demos showing that using event driven vs e.g. http is much better
  • #24: Talking about message driven vs event driven
  • #25: Talking about message driven vs event driven
  • #26: Talking about message driven vs event driven
  • #27: How do we actually achieve this when using event-driven architecture and tools like Kafka? Kafka is naturally resilient : Multiple brokers with replication of events within (Leader and at least two followers) Leader election if leader broker goes down, don’t loose connection between app and Kafka Kafka configuration can also help  RESILIENT PRODUCER  Delivery Guarantees (Using “at least once”, so that you guarantee delivery of event or message to Kafka) and Retries (in case sending fails) RESILIENT CONSUMER  Use of manual offset commit rather than automatic, line of code in app that determines when offset should be committed so messages aren’t lost during processing by consumers. Kafka is naturally scalable: Ability to scale out work for each topic across brokers  scaling load on system Use of Consumer Groups to scale out number of consumers while keeping the order guarantee and preventing duplication of processing of same message or event. BUT NOT DESIGNED FOR REACTIVE – THAT’S WHERE WE CAN UTILISE REACTIVE FRAMEWORKS AND TOOLKITS TO REALLY ENABLE ALL OF THESE BAHVIOURS, BUILDING UPON WHAT COMES AS STANDARD WITH KAFKA.
  • #28: All of these frameworks take the role of handling polling, then provide different ways for us to handle the processing and flow. MicroProfile and Alpakka provide a more constrained way of doing backpressure and flow control, whereas vertx provides the tools for doing that separation but leaves it up to the developer to decide exactly how to implement it. We will describe flow control for MP and alpakka, “how they improve flow control and allow application to follow reactive streams spec” Others: Alpakka Kafka Connector Spring WebFlux Project Reactor
  • #29: Eclipse MicroProfile is an open-source community specification for Enterprise Java microservices A community of individuals, organizations, and vendors collaborating within an open source (Eclipse) project to bring microservices to the Enterprise Java community
  • #30: The MicroProfile Reactive Messaging specifiMicroProfile Reactive Messaging makes use of and interoperates with two other specifications: Reactive Streams is a specification for doing asynchronous stream processing with back pressure. It defines a minimal set of interfaces to allow components which do this sort of stream processing to be connected together. MicroProfile Reactive Streams Operators is a MicroProfile specification which builds on Reactive Streams to provide a set of basic operators to link different reactive components together and to perform processing on the data which passes between them. When you use the MicroProfile Reactive Messaging @Incoming and @Outgoing annotations, Open Liberty creates a Reactive Streams component for each method and joins them up by matching the channel names. cation aims to deliver applications embracing the characteristics of reactive systems
  • #31: A method with an @Incoming annotation consumes messages from a channel. A method with an @Outgoing annotation publishes messages to a channel. A method with both an @Incoming and an @Outgoing annotation is a message processor, it consumes messages from a channel, does some transformation to them, and publishes messages to another channel. When you use the MicroProfile Reactive Messaging @Incoming and @Outgoing annotations, Open Liberty creates a Reactive Streams component for each method and joins them up by matching the channel names.
  • #32: Polyglot Java, Javascript, Groovy, Ceylon, Scala and Kotlin The reactor pattern is one implementation technique of event-driven architecture. In simple terms, it uses a single threaded event loop blocking on resource-emitting events and dispatches them to corresponding handlers and callbacks. It receives messages, requests, and connections coming from multiple concurrent clients and processes these posts sequentially using event handlers. The purpose of the Reactor design pattern is to avoid the common problem of creating a thread for each message, request, and connection. Then it receives events from a set of handlers and distributes them sequentially to the corresponding event handlers. It’s single-threaded – so you must not block the thread! The Kafka client is becoming more popular and e.g. it is used by SmallRye Reactive messaging
  • #33: So Kafka claims to have scalable consumption and resiliency, do I just get that for free when I start Kafka? How does it work?
  • #34: Demo the starter app working Key takeaways: Choosing a reactive framework makes it easier to work with Kafka Strimzi, cool open source project that provides a Kubernetes operator for Kafka, just been accepted into CNCF (Cloud Native Computer Foundation) Kate active contributer to Strimzi and I was interested in Vert.x
  • #35: Demo the starter app working Key takeaways: Choosing a reactive framework makes it easier to work with Kafka Strimzi, cool open source project that provides a Kubernetes operator for Kafka, just been accepted into CNCF (Cloud Native Computer Foundation) Kate active contributer to Strimzi and I was interested in Vert.x
  • #38: In the original version of the application, we were having to use a for loop inside a while loop that resulted in the following flow when consuming records: Poll for records. Poll function returns with a batch of records. Iterate through each record in the batch. For each record, send the record along the WebSocket to the frontend. After iteration is complete, return to Step 1. So, while we were processing the current batch of records, no new records could be fetched.
  • #39: In the new application using the Vert.x client instead, you simply write a handler function that will be called every time a new record arrives. This allows asynchronous consuming and processing of records which fits in much better with the reactive paradigm. This change makes the flow a lot simpler. Vert.x now handles the step of polling for new records. The application code does the following: Receive a new record. Send the record along the WebSocket to the frontend. This not only allows the application to process on a per-record basis but also leaves the developer free to focus on the processing of records, rather than the work of consuming them from Kafka.
  • #40: We wanted the ability to pause and resume both producing and consuming records from the frontend. In the original application, where the default Java Kafka client was used, the while loop that calls the poll for the consumer needed to be exited and resumed based on commands from the frontend. Because this client is single threaded, the loop had to be executed in a separate thread to the main flow of the application. As we wanted to produce records on a timer, a similar while loop in a separate thread was required for the producer. Therefore, we had to deal with the headache of writing logic to control the thread lifecycle and synchronize data across threads just to get control over the flow of records. In the Vert.x application, we were able to use a combination of Vert.x features and Vert.x Kafka client features to make this flow control much easier. For the producer, we used a feature in Vert.x that allows a handler to be called on a timer basis. The handler could be called once, or multiple times, and it was easy for us to pause and resume the timer when start and stop requests arrived from the WebSocket. For the consumer in the Vert.x application, we could use the built-in back-pressure support that allows consumers to be paused and resumed. When a stop command comes from the WebSocket, the consumer is paused and the Vert.x client will stop polling for new records from Kafka. At a later time, the consumer can be resumed and the Vert.x client will resume polling and the existing handler will start receiving new records.
  • #42: So Kafka claims to have scalable consumption and resiliency, do I just get that for free when I start Kafka? How does it work?
  • #46: Creating reactive Java Microservices Testing reactive Java microservices Consuming RESTful services asynchronously with template interfaces Integrating RESTful services with a reactive system Acknowledging messages using MicroProfile Reactive Messaging
  • #49: How do we actually achieve this when using event-driven architecture and tools like Kafka? Kafka is naturally resilient – (brokers go through
  • #50: Talking about message driven vs event driven
  • #51: Imagine a broker goes down, this means the leader of Topic A, partition 1 is offline
  • #52: Can’t do fire and forget if you want full resiliency cause if the broker goes down your messages get lost Two different guarantees, way you get them is through confirguartion At most once, you may lose some messages (not completely relisient) At least once, guaranteed delivery but may get duplicates Retries is if acks times out/fails – how many times do you retry producing the event (how will the retry affect ordering)
  • #54: Talking about message driven vs event driven
  • #55: Elasticity in Kafka itself Scale out brokers, can’t scale down (where do events go if you did?) Can scale out partitions but can’t scale them down again Can add topics, and delete topics if you don’t care about them
  • #56: To allow scalability of consumers, consumers are grouped into consumer groups. Consumer declare what group they are in using a group id For consumers we use Consumer groups to enable elasticity
  • #57: Elasticity in Kafka itself Scale out brokers, can’t scale down (where do events go if you did?) Can scale out partitions but can’t scale them down again Can add topics, and delete topics if you don’t care about them