SlideShare a Scribd company logo
Connecting Apache Kafka With Mule ESB
JITENDRA BAFNA
Connecting Apache Kafka With Mule ESB
1.0 Overview
Apache Kafka was initially originated by LinkedIn and later became an open sourced Apache in
2011. Kafka is messaging queuing system and it is written in Java and Scala. Kafka is a distributed
publish-subscribe messaging system that is designed to be fast, scalable, and durable.
Kafka has four core API's
• The Producer API allows an application to publish a stream of records to one or more Kafka
topics.
• The Consumer API allows an application to subscribe to one or more topics and process the
stream of records produced to them.
• The Streams API allows an application to act as a stream processor, consuming an input stream
from one or more topics and producing an output stream to one or more output topics,
effectively transforming the input streams to output streams.
• The Connector API allows building and running reusable producers or consumers that connect
Kafka topics to existing applications or data systems.
Connecting Apache Kafka With Mule ESB
Connecting Apache Kafka With Mule ESB
2.0 Components of Apache Kafka
• Topic is name of category or feed where records has been published.Topic are always multi
subscriber as it can have zero or more consumers that subscribe to the data written to it
• Producers publish data to topics of their choice. It can publish data to one or more Kafka topics.
• Consumers consume data from Topics. Consumers subscribes to one or more topics and consume
published messages by pulling data from the brokers.
• Partition: -Topics may have many partitions, so it can handle an arbitrary amount of data.
• Partition offset:- Each partitioned message has unique id and it is known as offset.
• Brokers are simple system responsible for maintaining the published data. Each broker may have
zero or more partitions per topic.
• Kafka Cluster: - Kafka's server has one or more brokers are called Kafka Cluster.
Connecting Apache Kafka With Mule ESB
3.0 Apache Kafka Use Cases
Belowis someuse caseswhereApacheKafkacan beconsider.
3.1 Messaging
In comparison toothermessagingsystem,ApacheKafkahasbetterthroughput andperformance, partitioning,replication,andfault-tolerancewhichmakesit a
goodsolution forlargescalemessageprocessingapplications.
3.2Website Activity Tracking
Websiteactivity likenumber ofview, number ofsearchesor any otheractionsthat usersmay perform is publishedtocentraltopicswithonetopic peractivity type.
Thesefeeds are availablefor subscription forarangeof use casesincludingreal-timeprocessing,real-timemonitoring,andloadingintoHadooporofflinedata
warehousingsystemsforofflineprocessingandreporting.
3.3 Metrics
Kafkais often used for operationalmonitoringdata.Thisinvolvesaggregatingstatisticsfromdistributedapplicationstoproducecentralizedfeedsofoperational
data.
3.4 LogAggregation
Kafkacan be used acrossan organization tocollect logsfrommultipleservicesandmakethemavailablein standardformat to multipleconsumers.
3.5Stream Processing
PopularframeworkssuchasStormandSparkStreamingreaddatafroma topic,processesit,andwriteprocesseddatatoanew topic whereit becomesavailable
for users andapplications.Kafka’sstrong durability isalsovery useful in thecontext ofstreamprocessing.
Connecting Apache Kafka With Mule ESB
4.0 SetupZookeeperOn Windows Server
Now you will learn how to setup Zookeeper onWindows Server. Make sure JRE8
has been installed and JAVA_HOME path is setup in environment variable.
Connecting Apache Kafka With Mule ESB
4.1 Download & Install Zookeeper
Zookeeper also plays vital role for serving so many other purposes such as leader detection,
configuration management, synchronization, detecting when a new node join or leaves the cluster
etc.
• Download the ZooKeeper from http://zookeeper.apache.org/releases.html and extract it
(e.g. zookeeper-3.4.10).
• Go to your Zookeeper directory (e.g. C:zookeeper-3.4.10conf).
• Rename file zoo_sample.cfg to zoo.cfg.
• Open zoo.cfg file in text editor like Notepad or Notepad++.
• Search for dataDir=/tmp/zookeeper and update path to dataDir=zookeeper-3.4.10data.
• Add two environment variable
• a. Add System Variables ZOOKEEPER_HOME = C:zookeeper-3.4.10
• b. Edit System Variable named Path add ;%ZOOKEEPER_HOME%bin;
• By default Zookeeper run on port 2181 but you can change the port by editing zoo.cfg.
Connecting Apache Kafka With Mule ESB
4.2 StartingThe Zookeeper
Open the command prompt and run the command zkserverand it will start
Zookeeper on port localhost:2181.
Connecting Apache Kafka With Mule ESB
5.0 Setup Apache Kafka On Windows Server
Now you will learn how to setup Apache Kafka onWindows Server.
5.1 Download & InstallApache Kafka
• Download the Apache Kafka from http://kafka.apache.org/downloads.html and
extract it (e.g. kafka_2.11-0.9.0.0).
• Go to your Kafka config directory (e.g. C:kafka_2.11-0.9.0.0config).
• Open file server.propertiesin text editor like Notepad or Notepad++.
• Search for log.dirs=/tmp/kafka-logsand update path to log.dirs=C:kafka_2.11-
0.9.0.0kafka-logs.
Connecting Apache Kafka With Mule ESB
5.2 Starting Apache Kafka Server
• Open the command prompt and make sure you are at path C:kafka_2.11-0.9.0.0
• Run the below command to start Kafka server.
Connecting Apache Kafka With Mule ESB
6.0 CreatingTopic On Apache Kafka Server
Now we will create topic with replication factor 1 as only one kafka server is
running.
• Open command prompt and make sure you are at path C:kafka_2.11-
0.9.0.0binwindows
• Run below command to create topic
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --
topic muleesb
Connecting Apache Kafka With Mule ESB
7.0 Installing Anypoint Kafka Connector
Ingest streaming data from Kafka and publish it to Kafka with this connector.
By default Kafka connector is not part of Mule palette and you can install the Kafka
connector by connecting to Anypoint Exchange fromAnypoint Studio.You just
need to accept the license agreement and at the end of installation it will ask you
to restart the Anypoint studio. Streamline business processes and move data
between Kafka and Enterprise applications and services with the Anypoint
Connector for Kafka.
Kafka Connector enables out-of-the-box connectivity with Kafka, allowing users to
ingest real-time data from Kafka and publish it to Kafka.
Connecting Apache Kafka With Mule ESB
8.0 Integrating Apache Kafka With Mule ESB as Producer
We will implement flow that will publish message to Apache Kafka server.
• Place the http connector at message source and configure it.
• Drag and Drop Apache Kafka connector and configure it by clicking on add
button. Configure Bootstrap Servers, Producer Properties File andConsumer
Properties File. Press OK.
Connecting Apache Kafka With Mule ESB
Connecting Apache Kafka With Mule ESB
• Configure the Operation to Producer,Topic name and Key (it is some unique key
that needs to publish with message).
• Add consumer .properties and producer.properties file to mule application build
path (src/main/resources).Both properties files can be found at
location C:kafka_2.11-0.9.0.0config.
Connecting Apache Kafka With Mule ESB
9.0 IntegratingApache Kafka With Mule ESB asConsumer
We will implement flow that will consume message fromApache Kafka server.
• Place the Apache Kafka connector at message source and configure it by clicking
on add button. Configure Bootstrap Servers, Producer Properties File and
Consumer Properties File as shown above. Press OK.
• Configure Operation to Consumer,Topic name and Partitions (i.e. it is number of
partition you have given during creating topic).
Connecting Apache Kafka With Mule ESB
• Drag and drop the file connector and configure it. This will be used to save the
message consumed fromApache Kafka server.
Connecting Apache Kafka With Mule ESB
10.0 Mule Flow [Code]
<?xmlversion="1.0" encoding="UTF-8"?>
<mule xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns:apachekafka="http://www.mulesoft.org/schema/mule/apachekafka" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking"
xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd
http://www.mulesoft.org/schema/mule/apachekafka http://www.mulesoft.org/schema/mule/apachekafka/current/mule-apachekafka.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd">
<http:listener-config name="HTTP_Listener_Configuration"host="0.0.0.0" port="8081" doc:name="HTTPListener Configuration"/>
<apachekafka:config name="Apache_Kafka__Configuration"bootstrapServers="localhost:9092" consumerPropertiesFile="consumer.properties" producerPropertiesFile="producer.properties"
doc:name="Apache Kafka: Configuration"/>
<flow name="apache-kafka-producer">
<http:listener config-ref="HTTP_Listener_Configuration" path="/kafka"allowedMethods="POST" doc:name="HTTP"/>
<logger message="Message Published : #[payload]"level="INFO" doc:name="Logger"/>
<apachekafka:producer config-ref="Apache_Kafka__Configuration" topic="muleesb"key="#[server.dateTime.getMilliSeconds()]"doc:name="Apache Kafka"/>
</flow>
<flow name="apache-kafka-consumer">
<apachekafka:consumerconfig-ref="Apache_Kafka__Configuration" topic="muleesb"partitions="1" doc:name="Apache Kafka (Streaming)"/>
<logger message="Message Consumed : #[payload]"level="INFO" doc:name="Logger"/>
<file:outbound-endpoint path="src/test/resources/consumer" responseTimeout="10000"doc:name="File"/>
</flow>
</mule>
Connecting Apache Kafka With Mule ESB
11.0Testing
You can use Postman to test the application. Send the POST request to producer
flow and it will publish message to Apache Kafka.Once message is publish, it will
be consumed by consumer flow and save message to specified directory. For more
details on testing, please watch demonstration video with this slide.
Connecting Apache Kafka With Mule ESB
12.0 Useful Apache Kafka Commands
• Start Zookeeper: zkserver
• Start Apache Kafka: .binwindowskafka-server-start.bat .configserver.properties
• Start Producer: kafka-console-producer.bat --broker-list localhost:9092 --topic topicName
• Start Consumer: kafka-console-consumer.bat --zookeeper localhost:2181 --topic topicName
• Create Topic: kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --
partitions 1 --topic topicName
• List Topics: kafka-topics.bat --list --zookeeper localhost:2181
• Describe Topic: kafka-topics.bat --describe --zookeeper localhost:2181 --topic topicName
• Consume messages from beginning: kafka-console-consumer.bat --zookeeper localhost:2181 --
topic topicName --from-beginning
• Delete Topic: kafka-run-class.bat kafka.admin.TopicCommand --delete --topic topicName --
zookeeper localhost:2181
Connecting Apache Kafka With Mule ESB
13.0Conclusion
Apache Kafka is very powerful distributed, scalable and durable message queing
system. Mule ESB provides the Apache Kafka connector that can publish message
to Kafka server and consume message from Kafka server (i.e. can act as producer
as well as consumer.
ThankYou.

More Related Content

What's hot (20)

PDF
Intro to open source observability with grafana, prometheus, loki, and tempo(...
LibbySchulze
 
PDF
Grafana introduction
Rico Chen
 
PPSX
Apache Flink, AWS Kinesis, Analytics
Araf Karsh Hamid
 
PDF
Understanding MicroSERVICE Architecture with Java & Spring Boot
Kashif Ali Siddiqui
 
PPTX
Autoscaling Flink with Reactive Mode
Flink Forward
 
PDF
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Noritaka Sekiyama
 
PPTX
60000 TPS: How many CPUs?, Enterprise Postgres Day
EDB
 
PDF
Prometheus + Grafana = Awesome Monitoring
Henrique Galafassi Dalssaso
 
PPTX
Kafka + Uber- The World’s Realtime Transit Infrastructure, Aaron Schildkrout
confluent
 
PDF
Apache Kafka in the Airline, Aviation and Travel Industry
Kai Wähner
 
PDF
Openstack 101
Kamesh Pemmaraju
 
PDF
Best Practices for Streaming IoT Data with MQTT and Apache Kafka®
confluent
 
PDF
SAP Cloud Platform Product Overview L2 deck
SAP Cloud Platform
 
PDF
Red Hat OpenShift Container Platform Overview
James Falkner
 
PPTX
OpenTelemetry For Architects
Kevin Brockhoff
 
PDF
Getting Started Monitoring with Prometheus and Grafana
Syah Dwi Prihatmoko
 
PPTX
Microservice vs. Monolithic Architecture
Paul Mooney
 
PPTX
APACHE KAFKA / Kafka Connect / Kafka Streams
Ketan Gote
 
PPTX
Ansible Tutorial For Beginners | What Is Ansible And How It Works? | Ansible ...
Simplilearn
 
PPTX
Extending Flink SQL for stream processing use cases
Flink Forward
 
Intro to open source observability with grafana, prometheus, loki, and tempo(...
LibbySchulze
 
Grafana introduction
Rico Chen
 
Apache Flink, AWS Kinesis, Analytics
Araf Karsh Hamid
 
Understanding MicroSERVICE Architecture with Java & Spring Boot
Kashif Ali Siddiqui
 
Autoscaling Flink with Reactive Mode
Flink Forward
 
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Noritaka Sekiyama
 
60000 TPS: How many CPUs?, Enterprise Postgres Day
EDB
 
Prometheus + Grafana = Awesome Monitoring
Henrique Galafassi Dalssaso
 
Kafka + Uber- The World’s Realtime Transit Infrastructure, Aaron Schildkrout
confluent
 
Apache Kafka in the Airline, Aviation and Travel Industry
Kai Wähner
 
Openstack 101
Kamesh Pemmaraju
 
Best Practices for Streaming IoT Data with MQTT and Apache Kafka®
confluent
 
SAP Cloud Platform Product Overview L2 deck
SAP Cloud Platform
 
Red Hat OpenShift Container Platform Overview
James Falkner
 
OpenTelemetry For Architects
Kevin Brockhoff
 
Getting Started Monitoring with Prometheus and Grafana
Syah Dwi Prihatmoko
 
Microservice vs. Monolithic Architecture
Paul Mooney
 
APACHE KAFKA / Kafka Connect / Kafka Streams
Ketan Gote
 
Ansible Tutorial For Beginners | What Is Ansible And How It Works? | Ansible ...
Simplilearn
 
Extending Flink SQL for stream processing use cases
Flink Forward
 

Similar to Connecting Apache Kafka With Mule ESB (20)

PPTX
Real time data processing with anypoint connector for kafka
Son Nguyen
 
PPTX
Integrating Kafka with MuleSoft 4 and usecase
shyamraj55
 
PPTX
Mule soft meetup_chandigarh_#7_25_sept_2021
Lalit Panwar
 
PPTX
Columbus mule soft_meetup_aug2021_Kafka_Integration
MuleSoft Meetup
 
PDF
Apache Kafka - Scalable Message-Processing and more !
Guido Schmutz
 
PDF
Trivadis TechEvent 2016 Apache Kafka - Scalable Massage Processing and more! ...
Trivadis
 
PDF
JHipster conf 2019 - Kafka Ecosystem
Florent Ramiere
 
PDF
Devoxx university - Kafka de haut en bas
Florent Ramiere
 
PDF
Apache Kafka - Scalable Message Processing and more!
Guido Schmutz
 
PDF
Beyond the brokers - Un tour de l'écosystème Kafka
Florent Ramiere
 
PDF
Apache Kafka Introduction
Amita Mirajkar
 
PDF
Apache KAfka
Pedro Alcantara
 
PPTX
Training
HemantDunga1
 
DOCX
Apache kafka configuration-guide
Chetan Khatri
 
PDF
Apache Kafka Architecture & Fundamentals Explained
confluent
 
PDF
Set your Data in Motion with Confluent & Apache Kafka Tech Talk Series LME
confluent
 
PPTX
Introduction Apache Kafka
Joe Stein
 
PPTX
Apache kafka
Kumar Shivam
 
PDF
Apache Kafka - Scalable Message-Processing and more !
Guido Schmutz
 
PDF
Introduction to Apache Kafka and Confluent... and why they matter
confluent
 
Real time data processing with anypoint connector for kafka
Son Nguyen
 
Integrating Kafka with MuleSoft 4 and usecase
shyamraj55
 
Mule soft meetup_chandigarh_#7_25_sept_2021
Lalit Panwar
 
Columbus mule soft_meetup_aug2021_Kafka_Integration
MuleSoft Meetup
 
Apache Kafka - Scalable Message-Processing and more !
Guido Schmutz
 
Trivadis TechEvent 2016 Apache Kafka - Scalable Massage Processing and more! ...
Trivadis
 
JHipster conf 2019 - Kafka Ecosystem
Florent Ramiere
 
Devoxx university - Kafka de haut en bas
Florent Ramiere
 
Apache Kafka - Scalable Message Processing and more!
Guido Schmutz
 
Beyond the brokers - Un tour de l'écosystème Kafka
Florent Ramiere
 
Apache Kafka Introduction
Amita Mirajkar
 
Apache KAfka
Pedro Alcantara
 
Training
HemantDunga1
 
Apache kafka configuration-guide
Chetan Khatri
 
Apache Kafka Architecture & Fundamentals Explained
confluent
 
Set your Data in Motion with Confluent & Apache Kafka Tech Talk Series LME
confluent
 
Introduction Apache Kafka
Joe Stein
 
Apache kafka
Kumar Shivam
 
Apache Kafka - Scalable Message-Processing and more !
Guido Schmutz
 
Introduction to Apache Kafka and Confluent... and why they matter
confluent
 
Ad

More from Jitendra Bafna (20)

PDF
MuleSoft Surat Meetup#55 - Unleash the power of Anypoint MQ
Jitendra Bafna
 
PDF
MuleSoft Surat Meetup#54 - MuleSoft Automation
Jitendra Bafna
 
PDF
MuleSoft Surat Meetup#53 - MuleSoft for Clinical Trial Modernization
Jitendra Bafna
 
PDF
MuleSoft Surat Meetup#52 - Flex Gateway (Port Based Routing V/S Path Based Ro...
Jitendra Bafna
 
PDF
MuleSoft Surat Meetup#51 - API Monitoring - Through a New Lens
Jitendra Bafna
 
PDF
Engineering Student MuleSoft Meetup#7 - Leveraging MuleSoft Service in Salesf...
Jitendra Bafna
 
PDF
MuleSoft Nashik Meetup#7 - Building FHIR applications in MongoDB using MuleSoft
Jitendra Bafna
 
PDF
MuleSoft Surat Meetup#50 - Ask the MuleSoft Ambassadors + CloudHub 2.0 Overvi...
Jitendra Bafna
 
PDF
MuleSoft Surat Meetup#49 - Robotic Process Automation - Why, Where, When and ...
Jitendra Bafna
 
PDF
MuleSoft Surat Meetup#48 - Anypoint API Governance (RAML, OAS and Async API) ...
Jitendra Bafna
 
PDF
MuleSoft Surat Meetup#47 - Error Handling With MuleSoft
Jitendra Bafna
 
PDF
MuleSoft Surat Meetup#46 - Deep Dive into MUnit With MuleSoft
Jitendra Bafna
 
PDF
MuleSoft Surat Meetup#45 - Anypoint Flex Gateway as a Kubernetes Ingress Cont...
Jitendra Bafna
 
PDF
MuleSoft Surat Meetup#44 - Anypoint Flex Gateway Custom Policies With Rust
Jitendra Bafna
 
PDF
Engineering Student MuleSoft Meetup#6 - Basic Understanding of DataWeave With...
Jitendra Bafna
 
PDF
MuleSoft Nashik Meetup#5 - JSON Logger and Externalize Logs
Jitendra Bafna
 
PDF
MuleSoft Surat Meetup#43 - Combine Service Mesh With Anypoint API Management ...
Jitendra Bafna
 
PDF
Engineering Student MuleSoft Meetup#5 - Error Handling With MuleSoft
Jitendra Bafna
 
PDF
MuleSoft Surat Meetup#42 - Runtime Fabric Manager on Self Managed Kubernetes ...
Jitendra Bafna
 
PDF
MuleSoft Surat Meetup#41 - Universal API Management, Anypoint Flex Gateway an...
Jitendra Bafna
 
MuleSoft Surat Meetup#55 - Unleash the power of Anypoint MQ
Jitendra Bafna
 
MuleSoft Surat Meetup#54 - MuleSoft Automation
Jitendra Bafna
 
MuleSoft Surat Meetup#53 - MuleSoft for Clinical Trial Modernization
Jitendra Bafna
 
MuleSoft Surat Meetup#52 - Flex Gateway (Port Based Routing V/S Path Based Ro...
Jitendra Bafna
 
MuleSoft Surat Meetup#51 - API Monitoring - Through a New Lens
Jitendra Bafna
 
Engineering Student MuleSoft Meetup#7 - Leveraging MuleSoft Service in Salesf...
Jitendra Bafna
 
MuleSoft Nashik Meetup#7 - Building FHIR applications in MongoDB using MuleSoft
Jitendra Bafna
 
MuleSoft Surat Meetup#50 - Ask the MuleSoft Ambassadors + CloudHub 2.0 Overvi...
Jitendra Bafna
 
MuleSoft Surat Meetup#49 - Robotic Process Automation - Why, Where, When and ...
Jitendra Bafna
 
MuleSoft Surat Meetup#48 - Anypoint API Governance (RAML, OAS and Async API) ...
Jitendra Bafna
 
MuleSoft Surat Meetup#47 - Error Handling With MuleSoft
Jitendra Bafna
 
MuleSoft Surat Meetup#46 - Deep Dive into MUnit With MuleSoft
Jitendra Bafna
 
MuleSoft Surat Meetup#45 - Anypoint Flex Gateway as a Kubernetes Ingress Cont...
Jitendra Bafna
 
MuleSoft Surat Meetup#44 - Anypoint Flex Gateway Custom Policies With Rust
Jitendra Bafna
 
Engineering Student MuleSoft Meetup#6 - Basic Understanding of DataWeave With...
Jitendra Bafna
 
MuleSoft Nashik Meetup#5 - JSON Logger and Externalize Logs
Jitendra Bafna
 
MuleSoft Surat Meetup#43 - Combine Service Mesh With Anypoint API Management ...
Jitendra Bafna
 
Engineering Student MuleSoft Meetup#5 - Error Handling With MuleSoft
Jitendra Bafna
 
MuleSoft Surat Meetup#42 - Runtime Fabric Manager on Self Managed Kubernetes ...
Jitendra Bafna
 
MuleSoft Surat Meetup#41 - Universal API Management, Anypoint Flex Gateway an...
Jitendra Bafna
 
Ad

Recently uploaded (20)

PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
PDF
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
PPTX
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
PPTX
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
PDF
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
PPTX
Digital Circuits, important subject in CS
contactparinay1
 
PPTX
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
PPT
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
PDF
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
PDF
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
SIZING YOUR AIR CONDITIONER---A PRACTICAL GUIDE.pdf
Muhammad Rizwan Akram
 
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
Digital Circuits, important subject in CS
contactparinay1
 
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 

Connecting Apache Kafka With Mule ESB

  • 1. Connecting Apache Kafka With Mule ESB JITENDRA BAFNA
  • 2. Connecting Apache Kafka With Mule ESB 1.0 Overview Apache Kafka was initially originated by LinkedIn and later became an open sourced Apache in 2011. Kafka is messaging queuing system and it is written in Java and Scala. Kafka is a distributed publish-subscribe messaging system that is designed to be fast, scalable, and durable. Kafka has four core API's • The Producer API allows an application to publish a stream of records to one or more Kafka topics. • The Consumer API allows an application to subscribe to one or more topics and process the stream of records produced to them. • The Streams API allows an application to act as a stream processor, consuming an input stream from one or more topics and producing an output stream to one or more output topics, effectively transforming the input streams to output streams. • The Connector API allows building and running reusable producers or consumers that connect Kafka topics to existing applications or data systems.
  • 3. Connecting Apache Kafka With Mule ESB
  • 4. Connecting Apache Kafka With Mule ESB 2.0 Components of Apache Kafka • Topic is name of category or feed where records has been published.Topic are always multi subscriber as it can have zero or more consumers that subscribe to the data written to it • Producers publish data to topics of their choice. It can publish data to one or more Kafka topics. • Consumers consume data from Topics. Consumers subscribes to one or more topics and consume published messages by pulling data from the brokers. • Partition: -Topics may have many partitions, so it can handle an arbitrary amount of data. • Partition offset:- Each partitioned message has unique id and it is known as offset. • Brokers are simple system responsible for maintaining the published data. Each broker may have zero or more partitions per topic. • Kafka Cluster: - Kafka's server has one or more brokers are called Kafka Cluster.
  • 5. Connecting Apache Kafka With Mule ESB 3.0 Apache Kafka Use Cases Belowis someuse caseswhereApacheKafkacan beconsider. 3.1 Messaging In comparison toothermessagingsystem,ApacheKafkahasbetterthroughput andperformance, partitioning,replication,andfault-tolerancewhichmakesit a goodsolution forlargescalemessageprocessingapplications. 3.2Website Activity Tracking Websiteactivity likenumber ofview, number ofsearchesor any otheractionsthat usersmay perform is publishedtocentraltopicswithonetopic peractivity type. Thesefeeds are availablefor subscription forarangeof use casesincludingreal-timeprocessing,real-timemonitoring,andloadingintoHadooporofflinedata warehousingsystemsforofflineprocessingandreporting. 3.3 Metrics Kafkais often used for operationalmonitoringdata.Thisinvolvesaggregatingstatisticsfromdistributedapplicationstoproducecentralizedfeedsofoperational data. 3.4 LogAggregation Kafkacan be used acrossan organization tocollect logsfrommultipleservicesandmakethemavailablein standardformat to multipleconsumers. 3.5Stream Processing PopularframeworkssuchasStormandSparkStreamingreaddatafroma topic,processesit,andwriteprocesseddatatoanew topic whereit becomesavailable for users andapplications.Kafka’sstrong durability isalsovery useful in thecontext ofstreamprocessing.
  • 6. Connecting Apache Kafka With Mule ESB 4.0 SetupZookeeperOn Windows Server Now you will learn how to setup Zookeeper onWindows Server. Make sure JRE8 has been installed and JAVA_HOME path is setup in environment variable.
  • 7. Connecting Apache Kafka With Mule ESB 4.1 Download & Install Zookeeper Zookeeper also plays vital role for serving so many other purposes such as leader detection, configuration management, synchronization, detecting when a new node join or leaves the cluster etc. • Download the ZooKeeper from http://zookeeper.apache.org/releases.html and extract it (e.g. zookeeper-3.4.10). • Go to your Zookeeper directory (e.g. C:zookeeper-3.4.10conf). • Rename file zoo_sample.cfg to zoo.cfg. • Open zoo.cfg file in text editor like Notepad or Notepad++. • Search for dataDir=/tmp/zookeeper and update path to dataDir=zookeeper-3.4.10data. • Add two environment variable • a. Add System Variables ZOOKEEPER_HOME = C:zookeeper-3.4.10 • b. Edit System Variable named Path add ;%ZOOKEEPER_HOME%bin; • By default Zookeeper run on port 2181 but you can change the port by editing zoo.cfg.
  • 8. Connecting Apache Kafka With Mule ESB 4.2 StartingThe Zookeeper Open the command prompt and run the command zkserverand it will start Zookeeper on port localhost:2181.
  • 9. Connecting Apache Kafka With Mule ESB 5.0 Setup Apache Kafka On Windows Server Now you will learn how to setup Apache Kafka onWindows Server. 5.1 Download & InstallApache Kafka • Download the Apache Kafka from http://kafka.apache.org/downloads.html and extract it (e.g. kafka_2.11-0.9.0.0). • Go to your Kafka config directory (e.g. C:kafka_2.11-0.9.0.0config). • Open file server.propertiesin text editor like Notepad or Notepad++. • Search for log.dirs=/tmp/kafka-logsand update path to log.dirs=C:kafka_2.11- 0.9.0.0kafka-logs.
  • 10. Connecting Apache Kafka With Mule ESB 5.2 Starting Apache Kafka Server • Open the command prompt and make sure you are at path C:kafka_2.11-0.9.0.0 • Run the below command to start Kafka server.
  • 11. Connecting Apache Kafka With Mule ESB 6.0 CreatingTopic On Apache Kafka Server Now we will create topic with replication factor 1 as only one kafka server is running. • Open command prompt and make sure you are at path C:kafka_2.11- 0.9.0.0binwindows • Run below command to create topic kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 -- topic muleesb
  • 12. Connecting Apache Kafka With Mule ESB 7.0 Installing Anypoint Kafka Connector Ingest streaming data from Kafka and publish it to Kafka with this connector. By default Kafka connector is not part of Mule palette and you can install the Kafka connector by connecting to Anypoint Exchange fromAnypoint Studio.You just need to accept the license agreement and at the end of installation it will ask you to restart the Anypoint studio. Streamline business processes and move data between Kafka and Enterprise applications and services with the Anypoint Connector for Kafka. Kafka Connector enables out-of-the-box connectivity with Kafka, allowing users to ingest real-time data from Kafka and publish it to Kafka.
  • 13. Connecting Apache Kafka With Mule ESB 8.0 Integrating Apache Kafka With Mule ESB as Producer We will implement flow that will publish message to Apache Kafka server. • Place the http connector at message source and configure it. • Drag and Drop Apache Kafka connector and configure it by clicking on add button. Configure Bootstrap Servers, Producer Properties File andConsumer Properties File. Press OK.
  • 14. Connecting Apache Kafka With Mule ESB
  • 15. Connecting Apache Kafka With Mule ESB • Configure the Operation to Producer,Topic name and Key (it is some unique key that needs to publish with message). • Add consumer .properties and producer.properties file to mule application build path (src/main/resources).Both properties files can be found at location C:kafka_2.11-0.9.0.0config.
  • 16. Connecting Apache Kafka With Mule ESB 9.0 IntegratingApache Kafka With Mule ESB asConsumer We will implement flow that will consume message fromApache Kafka server. • Place the Apache Kafka connector at message source and configure it by clicking on add button. Configure Bootstrap Servers, Producer Properties File and Consumer Properties File as shown above. Press OK. • Configure Operation to Consumer,Topic name and Partitions (i.e. it is number of partition you have given during creating topic).
  • 17. Connecting Apache Kafka With Mule ESB • Drag and drop the file connector and configure it. This will be used to save the message consumed fromApache Kafka server.
  • 18. Connecting Apache Kafka With Mule ESB 10.0 Mule Flow [Code] <?xmlversion="1.0" encoding="UTF-8"?> <mule xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:apachekafka="http://www.mulesoft.org/schema/mule/apachekafka" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd http://www.mulesoft.org/schema/mule/apachekafka http://www.mulesoft.org/schema/mule/apachekafka/current/mule-apachekafka.xsd http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd"> <http:listener-config name="HTTP_Listener_Configuration"host="0.0.0.0" port="8081" doc:name="HTTPListener Configuration"/> <apachekafka:config name="Apache_Kafka__Configuration"bootstrapServers="localhost:9092" consumerPropertiesFile="consumer.properties" producerPropertiesFile="producer.properties" doc:name="Apache Kafka: Configuration"/> <flow name="apache-kafka-producer"> <http:listener config-ref="HTTP_Listener_Configuration" path="/kafka"allowedMethods="POST" doc:name="HTTP"/> <logger message="Message Published : #[payload]"level="INFO" doc:name="Logger"/> <apachekafka:producer config-ref="Apache_Kafka__Configuration" topic="muleesb"key="#[server.dateTime.getMilliSeconds()]"doc:name="Apache Kafka"/> </flow> <flow name="apache-kafka-consumer"> <apachekafka:consumerconfig-ref="Apache_Kafka__Configuration" topic="muleesb"partitions="1" doc:name="Apache Kafka (Streaming)"/> <logger message="Message Consumed : #[payload]"level="INFO" doc:name="Logger"/> <file:outbound-endpoint path="src/test/resources/consumer" responseTimeout="10000"doc:name="File"/> </flow> </mule>
  • 19. Connecting Apache Kafka With Mule ESB 11.0Testing You can use Postman to test the application. Send the POST request to producer flow and it will publish message to Apache Kafka.Once message is publish, it will be consumed by consumer flow and save message to specified directory. For more details on testing, please watch demonstration video with this slide.
  • 20. Connecting Apache Kafka With Mule ESB 12.0 Useful Apache Kafka Commands • Start Zookeeper: zkserver • Start Apache Kafka: .binwindowskafka-server-start.bat .configserver.properties • Start Producer: kafka-console-producer.bat --broker-list localhost:9092 --topic topicName • Start Consumer: kafka-console-consumer.bat --zookeeper localhost:2181 --topic topicName • Create Topic: kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 -- partitions 1 --topic topicName • List Topics: kafka-topics.bat --list --zookeeper localhost:2181 • Describe Topic: kafka-topics.bat --describe --zookeeper localhost:2181 --topic topicName • Consume messages from beginning: kafka-console-consumer.bat --zookeeper localhost:2181 -- topic topicName --from-beginning • Delete Topic: kafka-run-class.bat kafka.admin.TopicCommand --delete --topic topicName -- zookeeper localhost:2181
  • 21. Connecting Apache Kafka With Mule ESB 13.0Conclusion Apache Kafka is very powerful distributed, scalable and durable message queing system. Mule ESB provides the Apache Kafka connector that can publish message to Kafka server and consume message from Kafka server (i.e. can act as producer as well as consumer.