Java में Apache Kafka के साथ काम करना: बुनियादी से उन्नत उपयोग तक
Apache Kafka एक वितरित डेटा स्ट्रीमिंग प्लेटफॉर्म है जो event-driven आर्किटेक्चर बनाने के लिए डी-फैक्टो मानक बन गया है। इस गाइड में, हम Java में Kafka के साथ प्रभावी ढंग से काम करने का तरीका समझेंगे: आवश्यक लाइब्रेरीज़ स्थापित करने से लेकर एरर हैंडलिंग के साथ प्रोड्यूसर और कंज्यूमर लिखने तक।
Java और Kafka एक आदर्श जोड़ी क्यों हैं?
Java कई कारणों से Kafka के साथ काम करने के लिए प्रमुख भाषाओं में से एक है:
- Kafka का आधिकारिक क्लाइंट Java में लिखा गया है और अधिकतम प्रदर्शन प्रदान करता है
- लाइब्रेरीज़ की समृद्ध पारिस्थितिकी तंत्र (Spring Kafka, Kafka Streams, Akka Streams)
- सख्त टाइपिंग और कॉन्फ़िगरेशन ऑब्जेक्ट्स के माध्यम से बारीक ट्यूनिंग की संभावना
डिपेंडेंसीज़ स्थापित करना और कनेक्ट करना
Java में Kafka के साथ काम करने के लिए आपको pom.xml (Maven) या build.gradle (Gradle) में डिपेंडेंसी जोड़नी होगी।
Maven
<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>3.6.0</version></dependency>Gradle
implementation 'org.apache.kafka:kafka-clients:3.6.0'Kafka Producer (प्रोड्यूसर) बनाना
प्रोड्यूसर Kafka टॉपिक्स में मैसेज भेजने के लिए जिम्मेदार होता है। यहाँ सेटअप का एक बुनियादी उदाहरण है:
import org.apache.kafka.clients.producer.*;import org.apache.kafka.common.serialization.StringSerializer;import java.util.Properties;
public class SimpleProducer { public static void main(String[] args) { // 1. प्रोड्यूसर प्रॉपर्टीज़ सेट करना Properties props = new Properties(); props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); // 2. प्रोड्यूसर बनाना KafkaProducer<String, String> producer = new KafkaProducer<>(props); // 3. मैसेज भेजना ProducerRecord<String, String> record = new ProducerRecord<>( "my-topic", "key-1", "Hello, Kafka from Java!" ); // 4. callback के साथ एसिंक्रोनस भेजना producer.send(record, (metadata, exception) -> { if (exception == null) { System.out.println("मैसेज भेजा गया: " + "topic=" + metadata.topic() + ", partition=" + metadata.partition() + ", offset=" + metadata.offset()); } else { System.err.println("भेजने में त्रुटि: " + exception.getMessage()); } }); // 5. प्रोड्यूसर बंद करना producer.close(); }}Kafka Consumer (कंज्यूमर) बनाना
कंज्यूमर टॉपिक्स से मैसेज पढ़ता है। लोड बैलेंसिंग के लिए कंज्यूमर ग्रुप को सही ढंग से कॉन्फ़िगर करना महत्वपूर्ण है।
import org.apache.kafka.clients.consumer.*;import org.apache.kafka.common.serialization.StringDeserializer;import java.time.Duration;import java.util.Collections;import java.util.Properties;
public class SimpleConsumer { public static void main(String[] args) { // 1. कंज्यूमर प्रॉपर्टीज़ सेट करना Properties props = new Properties(); props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); props.put(ConsumerConfig.GROUP_ID_CONFIG, "my-consumer-group"); props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); props.put(Consu