The publishMessage
operation allows you to publish messages to Kafka brokers using Kafka topics.
<kafkaTransport.publishMessages> <topic>topicName</topic> </kafkaTransport.publishMessages>
Properties
topic:
The name of the topic.
Sample scenario
Following is a sample scenario that demonstrates how to send messages to a Kafka broker using Kafka topics.
Prerequisites
- Download and install Apache Kafka. For more information, see Apache Kafka documentation.
Copy the following client libraries from the
<KAFKA_HOME>/lib
directory to the<ESB_HOME>/repository/components/lib
directory.kafka_2.9.2-0.8.1.1.jar
scala-library-2.9.2.jar
zkclient-0.3.jar
zookeeper-3.3.4.jar
metrics-core-2.2.0.jar
Run the following command to start the ZooKeeper server:
bin/zookeeper-server-start.sh config/zookeeper.properties
You will see the following log:
Run the following command to start the Kafka server:
bin/kafka-server-start.sh config/server.properties
You will see the following log:
Building the sample
Following is a sample proxy service that illustrates how you can connect to a Kakfa broker with the init
operation and use the publishMessages
operation to publish the messages with the topic.
<proxy xmlns="http://ws.apache.org/ns/synapse" name="KafkaTransport" transports="https http" startOnLoad="true" trace="disable"> <description/> <target> <inSequence> <kafkaTransport.init> <brokerList>localhost:9092</brokerList> </kafkaTransport.init> <kafkaTransport.publishMessages> <topic>test</topic> </kafkaTransport.publishMessages> </inSequence> </target> </proxy>
Following is a sample client(JMeter) screen that displays how to send a message:
Analyzing the output
Run the following command to verify the messages:
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
You will see the following message content:
<name>sample</name>
This demonstrates that the Kafka connector publishes messages to Kafka brokers.