SlideShare a Scribd company logo
Guaranteed event delivery with
Ka1a and NodeJS
A U G 2 0 2 1
Guaranteed Event Delivery with Kafka and NodeJS | Amitesh Madhur, Nutanix
Guaranteed Event Delivery with Kafka and NodeJS | Amitesh Madhur, Nutanix
Guaranteed Event Delivery with Kafka and NodeJS | Amitesh Madhur, Nutanix
Guaranteed Event Delivery with Kafka and NodeJS | Amitesh Madhur, Nutanix
Ka#a
Kafka
1 User Management
5 Support
2 6 Licensing
3 Billing
7 API keys and Access Management
4 Onboarding
8 Many Automa=ons
Tenant Management
• Polling, data are almost always old.
• Most of the polling requests results in no change
• IO overheard, even if data is cached
• No Retry implementation needed
• Webhooks are more opDmal
• More real time, less chatty
• SubscripDon, Delivery and Retry implementaDon
Polling and Webhook
Node JS
Data
APIs that interact with database.
Events
To build event driven
APIs/Microservices
Non-blocking
Async processing
IO
API Calls
Single Threaded
Callback
Complete
Why Node JS
Callback
Complete
• Web Servers
• IntegraDon APIs
• Frontend server
• APIs with Database
• Command line Apps
• Webhooks
• Real time IO, Web sockets
Worker Threads
200/OK { success: true, data: Array(1010000) }
1 Enables Frontend services to directly access data.
2
3 API Authen=ca=on.
4 Click streaming.
Both Node and Kafka follows similar scaling methodology.
Advantages of Ka;a for Node JS
Subscribers
Subscribers
Subscribers
Subscribers
Subscribers
Design considera>ons
• Onboarding instructions
• Public key exchange
• List of events
Design considera>ons
• How do we deliver events?
• at-most-once
• at-least-once
• exactly-once
ü Onboarding instructions
ü Public key exchange
ü List of events
Guaranteed Event Delivery with Kafka and NodeJS | Amitesh Madhur, Nutanix
Guaranteed Event Delivery with Kafka and NodeJS | Amitesh Madhur, Nutanix
Guaranteed Event Delivery with Kafka and NodeJS | Amitesh Madhur, Nutanix
Guaranteed Event Delivery with Kafka and NodeJS | Amitesh Madhur, Nutanix
Guaranteed Event Delivery with Kafka and NodeJS | Amitesh Madhur, Nutanix
Design considera>ons
ü How do we deliver events?
ü at-most-once
ü at-least-once
ü exactly-once
ü Onboarding instructions
ü Public key exchange
ü List of events
• Easy subscripDon interface
PUT /subscriptions/subscribers/<id>
{
"events": ["PAYMENT_METHOD_EXPIRING"],
"subscriber": ”CLOUD_INFRA",
"method": "POST",
"url": "https://endpoint",
"auth": "JWT",
"audience": "subscriber-aud-url",
"email":"team@nutanix.com"
}
• Prerequisites
• Provides access to events
• Upsert API
Guaranteed Event Delivery with Kafka and NodeJS | Amitesh Madhur, Nutanix
Design considera>ons
ü How do we deliver events?
ü at-most-once
ü at-least-once
ü exactly-once
ü Onboarding instructions
ü Public key exchange
ü List of events
ü Easy subscripDon interface
• Produce event
Produce to Ka;a
const Kafka = require('node-rdkafka');
Produce to Ka;a
const producer = new Kafka.Producer({
'metadata.broker.list': 'broker-host:port’,
'dr_cb': true //delivery report callback
});
Produce to Ka;a
/* producer.produce(topic, partition, msg,
key, timestamp, opaque) */
producer.on('ready', function() {
const message = Buffer.from('Awesome message’);
try {
producer.produce ('topicName', null, message,
'Key-1', Date.now(), 'Key-1-opaque-token’);
} catch (err) {
console.error('A problem occurred:', err);
}
});
// Any errors? including connection errors
producer.on('event.error', function(err) {
console.error('Error from producer', err);
})
producer.setPollInterval(100);
Produce to Ka;a
producer.on('delivery-report', function(err, report) {
console.log('delivery-report:', report);
});
Produce to Kafka
// connect producer
producer.connect();
Produce to Kafka
const Kafka = require('node-rdkafka');
const producer = new Kafka.Producer({
'metadata.broker.list': 'broker-host:port’,
'dr_cb': true //delivery report callback
});
/* producer.produce(topic, partition, msg,
key, timestamp, opaque) */
producer.on('ready', function() {
const message = Buffer.from('Awesome message’);
try {
producer.produce ('topicName', null, message,
'Key-1', Date.now(), 'Key-1-opaque-token’);
} catch (err) {
console.error('A problem occurred:', err);
}
});
// Any errors? including connection errors
producer.on('event.error', function(err) {
console.error('Error from producer', err);
})
producer.setPollInterval(100);
producer.on('delivery-report', function(err, report) {
console.log('delivery-report:', report);
});
// connect producer
producer.connect();
Produce to Ka;a
Endpoint
POST http://kafka-host:8082/topics/{topic-name}
Headers:
"Accept": "application/vnd.kafka.json.v2+json, application/vnd.kafka+json,
application/json”
"Content-Type": "application/vnd.kafka.json.v2+json"
Payload:
{
"records": [{
"key": "key-1",
"value": {...}
}]
}
Guaranteed Event Delivery with Kafka and NodeJS | Amitesh Madhur, Nutanix
Design considera>ons
ü How do we deliver events?
ü at-most-once
ü at-least-once
ü exactly-once
ü Onboarding instructions
ü Public key exchange
ü List of events
ü Easy subscripDon interface
ü Produce event
• Consume and process near real Dme
const consumer = new Kafka.KafkaConsumer({
'metadata.broker.list': 'localhost:9092’,
'group.id': 'node-consumer’,
'enable.auto.commit': false
});
consumer.on('ready', function(arg) {
console.log('consumer ready.' + JSON.stringify(arg));
consumer.subscribe(['topic1', 'topic2']);
consumer.consume();
});
//starting the consumer
consumer.connect();
consumer.on('data', function(data) {
startProcessing(data.value);
});
// structure of data
{
value: Buffer.from('hi'), // message contents as a Buffer
size: 2, // size of the message, in bytes
topic: ‘topic', // topic the message comes from
offset: 10, // offset the message was read from
partition: 1, // partition the message was on
key: ‘key-1', // key of the message if present
timestamp: 1628388840187// timestamp of message creation
}
Guaranteed Event Delivery with Kafka and NodeJS | Amitesh Madhur, Nutanix
Webhook
const kafka = require('node-rdkafka');
const config = require('./consumerConfig')
const consumer = new kafka.Consumer(config);
consumer.on('data', (data) => {
processData(data);
});
consumer.connect();
const processData = async(data) => {
// Takes 1 sec to process
};
queued.max.messages.kbytes
Guaranteed Event Delivery with Kafka and NodeJS | Amitesh Madhur, Nutanix
Guaranteed Event Delivery with Kafka and NodeJS | Amitesh Madhur, Nutanix
Design considerations
ü How do we deliver events?
ü at-most-once
ü at-least-once
ü exactly-once
ü Onboarding instrucDons
ü Public key exchange
ü List of events
ü Easy subscription interface
ü Produce event
ü Consume and process near real Dme
• Ordering and Retry
Per subscriber queue
• Notify topic is partitioned by the number of total subscribers.
• Each partition will keep relevant subscribed events.
• After successful delivery, the consumer commits the offset.
• Partitions are limited, scale issue.
Multiple consumer groups
• Dispatcher does the ordering and produces the delivery topic.
• Each notifier has subscribed to the topic with a unique consumer group id.
• Manual commit after successful delivery.
• Each producers have their own topic.
• Each events are keyed by username.
• Manual commit after successful delivery.
• We get DNS error or TCP Error or TIMEOUT
• Queue failed events for retry.
• Non 2xx response.
• Queue failed events for retry.
• Subscribers re-subscribe every time they have known error or downtime.
• On subscription trigger retry.
• TIMEOUT
• Queue failed events for retry.
• Save the state in database
• Alert
Key Take-aways!
ü How Ka#a enables Node JS.
ü Introducing Kafka decouples services.
ü Webhook is useful for delivering events, Webhooks can use Ka#a.
ü Qualities of Node JS. IP, Data, Event and Async.
ü Webhook with at-least-once delivery.
ü Strategies of parallel processing and optimizing consumers.
ü Sequencing and retry.
ü Allow subscribers to resubscribe and trigger retry.
Thank you

More Related Content

PDF
Getting Started with Kubernetes
PPTX
Red Hat Openshift Fundamentals.pptx
PDF
Event driven autoscaling with keda
PPTX
Introduction to kubernetes
PDF
OpenShift Meetup - Tokyo - Service Mesh and Serverless Overview
PDF
[KubeCon EU 2022] Running containerd and k3s on macOS
PPTX
Application Autoscaling Made Easy with Kubernetes Event-Driven Autoscaling (K...
PDF
우아한 모노리스
Getting Started with Kubernetes
Red Hat Openshift Fundamentals.pptx
Event driven autoscaling with keda
Introduction to kubernetes
OpenShift Meetup - Tokyo - Service Mesh and Serverless Overview
[KubeCon EU 2022] Running containerd and k3s on macOS
Application Autoscaling Made Easy with Kubernetes Event-Driven Autoscaling (K...
우아한 모노리스

What's hot (20)

PPTX
Kubernetes PPT.pptx
PDF
Kubernetes or OpenShift - choosing your container platform for Dev and Ops
PPTX
CI/CD Best Practices for Your DevOps Journey
PPTX
Comparison of existing cni plugins for kubernetes
PDF
Quarkus - a next-generation Kubernetes Native Java framework
PDF
Event driven autoscaling with KEDA
PDF
Understanding docker networking
PDF
An Introduction to Kubernetes
PPTX
Jenkins tutorial for beginners
PDF
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
PDF
Spring Meetup Paris - Back to the basics of Spring (Boot)
PPT
Maven Overview
PPTX
Docker Swarm for Beginner
ODP
Kubernetes Architecture
PPTX
Wpfと非同期
PPTX
Kubernetes
PPTX
Jenkins CI presentation
PDF
Design patterns for microservice architecture
PDF
From Zero to Hero with Kafka Connect (Robin Moffat, Confluent) Kafka Summit L...
PDF
Kubernetes Architecture - beyond a black box - Part 1
Kubernetes PPT.pptx
Kubernetes or OpenShift - choosing your container platform for Dev and Ops
CI/CD Best Practices for Your DevOps Journey
Comparison of existing cni plugins for kubernetes
Quarkus - a next-generation Kubernetes Native Java framework
Event driven autoscaling with KEDA
Understanding docker networking
An Introduction to Kubernetes
Jenkins tutorial for beginners
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
Spring Meetup Paris - Back to the basics of Spring (Boot)
Maven Overview
Docker Swarm for Beginner
Kubernetes Architecture
Wpfと非同期
Kubernetes
Jenkins CI presentation
Design patterns for microservice architecture
From Zero to Hero with Kafka Connect (Robin Moffat, Confluent) Kafka Summit L...
Kubernetes Architecture - beyond a black box - Part 1
Ad

Similar to Guaranteed Event Delivery with Kafka and NodeJS | Amitesh Madhur, Nutanix (20)

PPTX
Introduction to Kafka and Event-Driven
PDF
Introduction to Kafka and Event-Driven
PDF
PPTX
Event Driven Architectures
PDF
Event Driven Architectures
PDF
Grokking TechTalk #24: Kafka's principles and protocols
PDF
Event driven-arch
DOCX
KAFKA Quickstart
PPTX
Kafka.pptx (uploaded from MyFiles SomnathDeb_PC)
PDF
Hello, kafka! (an introduction to apache kafka)
PPTX
AMIS SIG - Introducing Apache Kafka - Scalable, reliable Event Bus & Message ...
PPTX
Kafka overview
PDF
Implementing Domain Events with Kafka
PPTX
Reducing Microservice Complexity with Kafka and Reactive Streams
PPTX
Kafka101
PDF
Kafka zero to hero
PDF
Apache Kafka - From zero to hero
PDF
Introduction to Kafka
PPTX
Kafka 101
PPTX
What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...
Introduction to Kafka and Event-Driven
Introduction to Kafka and Event-Driven
Event Driven Architectures
Event Driven Architectures
Grokking TechTalk #24: Kafka's principles and protocols
Event driven-arch
KAFKA Quickstart
Kafka.pptx (uploaded from MyFiles SomnathDeb_PC)
Hello, kafka! (an introduction to apache kafka)
AMIS SIG - Introducing Apache Kafka - Scalable, reliable Event Bus & Message ...
Kafka overview
Implementing Domain Events with Kafka
Reducing Microservice Complexity with Kafka and Reactive Streams
Kafka101
Kafka zero to hero
Apache Kafka - From zero to hero
Introduction to Kafka
Kafka 101
What is Kafka & why is it Important? (UKOUG Tech17, Birmingham, UK - December...
Ad

More from HostedbyConfluent (20)

PDF
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
PDF
Renaming a Kafka Topic | Kafka Summit London
PDF
Evolution of NRT Data Ingestion Pipeline at Trendyol
PDF
Ensuring Kafka Service Resilience: A Dive into Health-Checking Techniques
PDF
Exactly-once Stream Processing with Arroyo and Kafka
PDF
Fish Plays Pokemon | Kafka Summit London
PDF
Tiered Storage 101 | Kafla Summit London
PDF
Building a Self-Service Stream Processing Portal: How And Why
PDF
From the Trenches: Improving Kafka Connect Source Connector Ingestion from 7 ...
PDF
Future with Zero Down-Time: End-to-end Resiliency with Chaos Engineering and ...
PDF
Navigating Private Network Connectivity Options for Kafka Clusters
PDF
Apache Flink: Building a Company-wide Self-service Streaming Data Platform
PDF
Explaining How Real-Time GenAI Works in a Noisy Pub
PDF
TL;DR Kafka Metrics | Kafka Summit London
PDF
A Window Into Your Kafka Streams Tasks | KSL
PDF
Mastering Kafka Producer Configs: A Guide to Optimizing Performance
PDF
Data Contracts Management: Schema Registry and Beyond
PDF
Code-First Approach: Crafting Efficient Flink Apps
PDF
Debezium vs. the World: An Overview of the CDC Ecosystem
PDF
Beyond Tiered Storage: Serverless Kafka with No Local Disks
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Renaming a Kafka Topic | Kafka Summit London
Evolution of NRT Data Ingestion Pipeline at Trendyol
Ensuring Kafka Service Resilience: A Dive into Health-Checking Techniques
Exactly-once Stream Processing with Arroyo and Kafka
Fish Plays Pokemon | Kafka Summit London
Tiered Storage 101 | Kafla Summit London
Building a Self-Service Stream Processing Portal: How And Why
From the Trenches: Improving Kafka Connect Source Connector Ingestion from 7 ...
Future with Zero Down-Time: End-to-end Resiliency with Chaos Engineering and ...
Navigating Private Network Connectivity Options for Kafka Clusters
Apache Flink: Building a Company-wide Self-service Streaming Data Platform
Explaining How Real-Time GenAI Works in a Noisy Pub
TL;DR Kafka Metrics | Kafka Summit London
A Window Into Your Kafka Streams Tasks | KSL
Mastering Kafka Producer Configs: A Guide to Optimizing Performance
Data Contracts Management: Schema Registry and Beyond
Code-First Approach: Crafting Efficient Flink Apps
Debezium vs. the World: An Overview of the CDC Ecosystem
Beyond Tiered Storage: Serverless Kafka with No Local Disks

Recently uploaded (20)

PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
Spectroscopy.pptx food analysis technology
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Encapsulation_ Review paper, used for researhc scholars
PPT
Teaching material agriculture food technology
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Electronic commerce courselecture one. Pdf
PDF
cuic standard and advanced reporting.pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
sap open course for s4hana steps from ECC to s4
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Empathic Computing: Creating Shared Understanding
PDF
MIND Revenue Release Quarter 2 2025 Press Release
“AI and Expert System Decision Support & Business Intelligence Systems”
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
Network Security Unit 5.pdf for BCA BBA.
Review of recent advances in non-invasive hemoglobin estimation
Spectroscopy.pptx food analysis technology
The AUB Centre for AI in Media Proposal.docx
Encapsulation_ Review paper, used for researhc scholars
Teaching material agriculture food technology
Spectral efficient network and resource selection model in 5G networks
Electronic commerce courselecture one. Pdf
cuic standard and advanced reporting.pdf
20250228 LYD VKU AI Blended-Learning.pptx
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
sap open course for s4hana steps from ECC to s4
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Empathic Computing: Creating Shared Understanding
MIND Revenue Release Quarter 2 2025 Press Release

Guaranteed Event Delivery with Kafka and NodeJS | Amitesh Madhur, Nutanix

  • 1. Guaranteed event delivery with Ka1a and NodeJS A U G 2 0 2 1
  • 8. 1 User Management 5 Support 2 6 Licensing 3 Billing 7 API keys and Access Management 4 Onboarding 8 Many Automa=ons Tenant Management
  • 9. • Polling, data are almost always old. • Most of the polling requests results in no change • IO overheard, even if data is cached • No Retry implementation needed • Webhooks are more opDmal • More real time, less chatty • SubscripDon, Delivery and Retry implementaDon Polling and Webhook
  • 10. Node JS Data APIs that interact with database. Events To build event driven APIs/Microservices Non-blocking Async processing IO API Calls
  • 12. Why Node JS Callback Complete • Web Servers • IntegraDon APIs • Frontend server • APIs with Database • Command line Apps • Webhooks • Real time IO, Web sockets
  • 13. Worker Threads 200/OK { success: true, data: Array(1010000) }
  • 14. 1 Enables Frontend services to directly access data. 2 3 API Authen=ca=on. 4 Click streaming. Both Node and Kafka follows similar scaling methodology. Advantages of Ka;a for Node JS
  • 20. Design considera>ons • Onboarding instructions • Public key exchange • List of events
  • 21. Design considera>ons • How do we deliver events? • at-most-once • at-least-once • exactly-once ü Onboarding instructions ü Public key exchange ü List of events
  • 27. Design considera>ons ü How do we deliver events? ü at-most-once ü at-least-once ü exactly-once ü Onboarding instructions ü Public key exchange ü List of events • Easy subscripDon interface
  • 28. PUT /subscriptions/subscribers/<id> { "events": ["PAYMENT_METHOD_EXPIRING"], "subscriber": ”CLOUD_INFRA", "method": "POST", "url": "https://endpoint", "auth": "JWT", "audience": "subscriber-aud-url", "email":"team@nutanix.com" } • Prerequisites • Provides access to events • Upsert API
  • 30. Design considera>ons ü How do we deliver events? ü at-most-once ü at-least-once ü exactly-once ü Onboarding instructions ü Public key exchange ü List of events ü Easy subscripDon interface • Produce event
  • 31. Produce to Ka;a const Kafka = require('node-rdkafka');
  • 32. Produce to Ka;a const producer = new Kafka.Producer({ 'metadata.broker.list': 'broker-host:port’, 'dr_cb': true //delivery report callback });
  • 33. Produce to Ka;a /* producer.produce(topic, partition, msg, key, timestamp, opaque) */ producer.on('ready', function() { const message = Buffer.from('Awesome message’); try { producer.produce ('topicName', null, message, 'Key-1', Date.now(), 'Key-1-opaque-token’); } catch (err) { console.error('A problem occurred:', err); } });
  • 34. // Any errors? including connection errors producer.on('event.error', function(err) { console.error('Error from producer', err); }) producer.setPollInterval(100); Produce to Ka;a producer.on('delivery-report', function(err, report) { console.log('delivery-report:', report); });
  • 35. Produce to Kafka // connect producer producer.connect();
  • 36. Produce to Kafka const Kafka = require('node-rdkafka'); const producer = new Kafka.Producer({ 'metadata.broker.list': 'broker-host:port’, 'dr_cb': true //delivery report callback }); /* producer.produce(topic, partition, msg, key, timestamp, opaque) */ producer.on('ready', function() { const message = Buffer.from('Awesome message’); try { producer.produce ('topicName', null, message, 'Key-1', Date.now(), 'Key-1-opaque-token’); } catch (err) { console.error('A problem occurred:', err); } }); // Any errors? including connection errors producer.on('event.error', function(err) { console.error('Error from producer', err); }) producer.setPollInterval(100); producer.on('delivery-report', function(err, report) { console.log('delivery-report:', report); }); // connect producer producer.connect();
  • 37. Produce to Ka;a Endpoint POST http://kafka-host:8082/topics/{topic-name} Headers: "Accept": "application/vnd.kafka.json.v2+json, application/vnd.kafka+json, application/json” "Content-Type": "application/vnd.kafka.json.v2+json" Payload: { "records": [{ "key": "key-1", "value": {...} }] }
  • 39. Design considera>ons ü How do we deliver events? ü at-most-once ü at-least-once ü exactly-once ü Onboarding instructions ü Public key exchange ü List of events ü Easy subscripDon interface ü Produce event • Consume and process near real Dme
  • 40. const consumer = new Kafka.KafkaConsumer({ 'metadata.broker.list': 'localhost:9092’, 'group.id': 'node-consumer’, 'enable.auto.commit': false });
  • 41. consumer.on('ready', function(arg) { console.log('consumer ready.' + JSON.stringify(arg)); consumer.subscribe(['topic1', 'topic2']); consumer.consume(); }); //starting the consumer consumer.connect();
  • 42. consumer.on('data', function(data) { startProcessing(data.value); }); // structure of data { value: Buffer.from('hi'), // message contents as a Buffer size: 2, // size of the message, in bytes topic: ‘topic', // topic the message comes from offset: 10, // offset the message was read from partition: 1, // partition the message was on key: ‘key-1', // key of the message if present timestamp: 1628388840187// timestamp of message creation }
  • 44. Webhook const kafka = require('node-rdkafka'); const config = require('./consumerConfig') const consumer = new kafka.Consumer(config); consumer.on('data', (data) => { processData(data); }); consumer.connect(); const processData = async(data) => { // Takes 1 sec to process }; queued.max.messages.kbytes
  • 47. Design considerations ü How do we deliver events? ü at-most-once ü at-least-once ü exactly-once ü Onboarding instrucDons ü Public key exchange ü List of events ü Easy subscription interface ü Produce event ü Consume and process near real Dme • Ordering and Retry
  • 48. Per subscriber queue • Notify topic is partitioned by the number of total subscribers. • Each partition will keep relevant subscribed events. • After successful delivery, the consumer commits the offset. • Partitions are limited, scale issue.
  • 49. Multiple consumer groups • Dispatcher does the ordering and produces the delivery topic. • Each notifier has subscribed to the topic with a unique consumer group id. • Manual commit after successful delivery.
  • 50. • Each producers have their own topic. • Each events are keyed by username. • Manual commit after successful delivery.
  • 51. • We get DNS error or TCP Error or TIMEOUT • Queue failed events for retry.
  • 52. • Non 2xx response. • Queue failed events for retry. • Subscribers re-subscribe every time they have known error or downtime. • On subscription trigger retry.
  • 53. • TIMEOUT • Queue failed events for retry.
  • 54. • Save the state in database • Alert
  • 55. Key Take-aways! ü How Ka#a enables Node JS. ü Introducing Kafka decouples services. ü Webhook is useful for delivering events, Webhooks can use Ka#a. ü Qualities of Node JS. IP, Data, Event and Async. ü Webhook with at-least-once delivery. ü Strategies of parallel processing and optimizing consumers. ü Sequencing and retry. ü Allow subscribers to resubscribe and trigger retry.