Java में Kafka के साथ काम करें: लाइब्रेरी, सेटअप और कोड उदाहरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Java में Kafka के साथ काम करें: लाइब्रेरी, सेटअप और कोड उदाहरण

Apache Kafka एक डिस्ट्रीब्यूटेड डेटा स्ट्रीमिंग प्लेटफ़ॉर्म है, जिसका उपयोग हाई-लोड मैसेजिंग सिस्टम, लॉग कलेक्शन, रियल-टाइम इवेंट प्रोसेसिंग और माइक्रोसर्विसेज इंटीग्रेशन के लिए किया जाता है। Java इकोसिस्टम में Kafka का विशेष स्थान है, क्योंकि इसकी आधिकारिक लाइब्रेरी Kafka Clients और कई अतिरिक्त टूल्स उपलब्ध हैं। इस लेख में हम विस्तार से जानेंगे कि Java में Kafka के साथ कैसे काम करें, कौन सी लाइब्रेरीज़ उपयोग करें, और प्रैक्टिकल कोड उदाहरण देखेंगे।

Java में Kafka के लिए मुख्य लाइब्रेरीज़

Apache Kafka के साथ Java एप्लिकेशन को इंटीग्रेट करने के लिए कई महत्वपूर्ण लाइब्रेरीज़ हैं:

  • Kafka Clients — Apache की आधिकारिक लाइब्रेरी, जो प्रोड्यूसर (Producer) और कंज्यूमर (Consumer) के लिए API प्रदान करती है। यह ब्रोकर्स से जुड़ने का सबसे सरल और विश्वसनीय तरीका है।
  • Spring Kafka — Spring Framework का एक्सटेंशन, जो एनोटेशन और टेम्पलेट्स (KafkaTemplate, @KafkaListener) के ज़रिए Kafka सेटअप को आसान बनाता है।
  • Kafka Streams — Java में स्ट्रीम प्रोसेसिंग एप्लिकेशन बनाने के लिए लाइब्रेरी, जिसमें Spark या Flink की ज़रूरत नहीं है। यह फ़िल्टरिंग, एग्रीगेशन और स्ट्रीम मर्ज करने की सुविधा देता है।
  • Akka Streams Kafka (Alpakka) — Akka Streams पर आधारित रिएक्टिव लाइब्रेरी, जो एसिंक्रोनस और नॉन-ब्लॉकिंग एप्लिकेशन के लिए उपयुक्त है।

इस गाइड में हम आधिकारिक लाइब्रेरी Kafka Clients पर फोकस करेंगे, क्योंकि यह अन्य सभी टूल्स का आधार है।

डिपेंडेंसी जोड़ें (Maven)

शुरू करने के लिए pom.xml में यह डिपेंडेंसी जोड़ें:

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>3.7.0</version>
</dependency>

अगर आप Gradle का उपयोग कर रहे हैं, तो यह जोड़ें:

implementation 'org.apache.kafka:kafka-clients:3.7.0'

प्रोड्यूसर (Producer) सेटअप

प्रोड्यूसर Kafka टॉपिक्स में मैसेज भेजता है। आइए एक सरल उदाहरण देखें जो मैसेज बनाकर भेजता है।

import org.apache.kafka.clients.producer.*;
import java.util.Properties;

public class SimpleProducer {
    public static void main(String[] args) {
        // प्रोड्यूसर के प्रॉपर्टीज सेट करें
        Properties props = new Properties();
        props.put("bootstrap.servers", "localhost:9092");
        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
        props.put("acks", "all"); // सभी रेप्लिका से कन्फर्मेशन का इंतज़ार
        props.put("retries", 3);  // एरर होने पर रीट्राई की संख्या

        // प्रोड्यूसर बनाएं
        Producer<String, String> producer = new KafkaProducer<>(props);

        // मैसेज भेजें
        ProducerRecord<String, String> record = new ProducerRecord<>("my-topic", "key1", "Hello, Kafka from Java!");
        producer.send(record, (metadata, exception) -> {
            if (exception == null) {
                System.out.println("मैसेज टॉपिक में भेजा गया: " + metadata.topic() +
                                   ", पार्टीशन: " + metadata.partition() +
                                   ", ऑफ़सेट: " + metadata.offset());
            } else {
                System.err.println("भेजने में एरर: " + exception.getMessage());
            }
        });

        // प्रोड्यूसर बंद करें
        producer.close();
    }
}

इस उदाहरण में हमने ब्रोकर का पता (localhost:9092), की और वैल्यू के लिए सीरियलाइज़र (यहाँ स्ट्रिंग), और विश्वसनीयता पैरामीटर (acks=all) सेट किए हैं।

अनुशंसाएँ