Skip to content

Purpose and scope of this Document

This document provides an overview of publishing data to a Kafka topic using one of the Kafka clients in Node.js. It aims to guide readers through the configuration and execution of a Kafka producer script, ensuring a clear understanding of the necessary steps involved in the process.

Pre-Read: Get started with different Kafka clients

Pre-Req Info: - bootstrap_server = 'YOUR_BOOTSTRAP_SERVER' # from cluster settings
Note: For playground env you can always use pkc-zd997.eu-central-1.aws.confluent.cloud:9092
- api_key = 'YOUR_API_KEY' # from API key management, "API key" which is shared by KaaS Team
- api_secret = 'YOUR_API_SECRET' # from API key management, "API secret" which is shared by KaaS Team
- topic_name = 'YOUR_TOPIC_NAME' # your topic name configured as per naming standard
- groupId/clientId = 'GROUPID/CLIENTID' # It is mandatory to have prefix as "sa-[yourserviceaccountname]-" for groupID/ClientID

Node.js Script

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
const fs = require("fs");
const { Kafka } = require("@confluentinc/kafka-javascript").KafkaJS;

// Read configuration from client.properties
function readConfig(fileName) {
    const data = fs.readFileSync(fileName, "utf8").toString().split("\n");
    return data.reduce((config, line) => {
        const [key, value] = line.split("=");
        if (key && value) {
            config[key] = value;
        }
        return config;
    }, {});
}

async function produce(topic, config) {
    const key = "key";
    const value = "value";

    // Create a new producer instance
    const producer = new Kafka().producer(config);

    // Connect the producer to the broker
    await producer.connect();

    // Send a single message
    const produceRecord = await producer.send({
        topic,
        messages: [{ key, value }],
    });

    console.log(`Produced message to topic ${topic}: key = ${key}, value = ${value}, ${JSON.stringify(produceRecord, null, 2)}`);

    // Disconnect the producer
    await producer.disconnect();
}

// Main function to run the producer
async function main() {
    const config = readConfig("client.properties");
    const topic = "YOUR_TOPIC_NAME"; // Replace with your actual topic
    await produce(topic, config);
}

main().catch(console.error);
Download ccloud-nodejs-client.zip