कॉन्फ़िगर करें और स्प्रिंग बूट के साथ अपाचे काफ्का का उपयोग करें

May 13 2023
स्प्रिंग बूट के साथ काफ्का
परिचय Apache Kafka एक ओपन-सोर्स डिस्ट्रीब्यूटेड स्ट्रीमिंग प्लेटफॉर्म है जो बड़े पैमाने पर, हाई-थ्रूपुट, फॉल्ट-टॉलरेंट रियल-टाइम डेटा स्ट्रीमिंग को हैंडल करता है। प्रणाली एक प्रकाशित-सदस्यता मॉडल पर आधारित है जहां निर्माता विषयों पर संदेश प्रकाशित करते हैं, और उपभोक्ता संदेशों का उपभोग करने के लिए उन विषयों की सदस्यता लेते हैं।
छवि स्रोत

परिचय

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

इस दस्तावेज़ का उपयोग:

आप अपने स्प्रिंग बूट एप्लिकेशन में संदेश (JSON सामग्री) बनाने और उपभोग करने के लिए अपाचे काफ्का को कॉन्फ़िगर और उपयोग करने के लिए इस दस्तावेज़ का उपयोग कर सकते हैं।

आवश्यक शर्तें

इस दस्तावेज़ को पढ़ने से पहले आपको जावा, स्प्रिंग-बूट, अपाचे काफ्का, मेवेन या ग्रेडल की अच्छी समझ की आवश्यकता है अन्यथा आपको उनके आधिकारिक दस्तावेज और गाइड की जांच करने का सुझाव दिया जाएगा।

इंस्टालेशन

काफ्का विषयों के लिए संदेश तैयार करने से पहले, आपको अपने pom.xml(Maven) या build.gradle(Gradle project) में आवश्यक निर्भरताओं को कॉन्फ़िगर करने के लिए कुछ चरणों को पूरा करना होगा।

मेवेन के लिए:

For Gradle 
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.kafka</groupId>
   <artifactId>spring-kafka</artifactId>
</dependency>

implementation ‘org.springframework.boot:spring-boot-starter’
implementation ‘org.springframework.kafka:spring-kafka’

विन्यास

काफ्का गुणों को Application.properties फ़ाइल में कॉन्फ़िगर करना, आप अपने कस्टम गुण भी प्राप्त कर सकते हैं। काफ्का सर्वर के बूटस्ट्रैप सर्वर और आपके द्वारा आवश्यक किसी भी अतिरिक्त कॉन्फ़िगरेशन गुणों को निर्दिष्ट करें, जैसे कि उपभोक्ता समूह आईडी।

आवेदन.गुण

spring.kafka.bootstrap-servers=<kafka-bootstrap-servers> 
spring.kafka.consumer.group-id=<consumer-group-id>
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.app.topic=<topic-name>


spring.kafka.bootstrap-servers=localhost:9092 
spring.kafka.consumer.group-id=group_category
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.app.topic=my-topic

काफ्का निर्माता एक घटक है जो काफ्का विषयों को संदेश भेजता है। यह काफ्का को डेटा प्रकाशित करता है, जिसे एक या अधिक काफ्का उपभोक्ता उपयोग कर सकते हैं।

काफ्का निर्माता बनाने के लिए, आपको निम्नलिखित कदम उठाने होंगे:

  1. काफ्का निर्माता गुणों को कॉन्फ़िगर करें: काफ्का निर्माता के लिए आवश्यक कॉन्फ़िगरेशन गुण सेट करें, जैसे बूटस्ट्रैप सर्वर (काफ्का दलालों के पते) और क्रमांकन सेटिंग्स। यह हम पहले ही अंतिम चरण में कर चुके हैं।
  2. काफ्का निर्माता बनाएँ: काफ्का को संदेश भेजने के लिए; आप स्प्रिंग काफ्का द्वारा प्रदान किए गए टेम्पलेट का उपयोग कर सकते हैं। यहाँ एक साधारण निर्माता का उदाहरण दिया गया है:
  3. import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.kafka.core.KafkaTemplate;
    import org.springframework.stereotype.Service;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    @Component
    public class KafkaEventProducer {
     
     private static final Logger logger = LoggerFactory.getLogger(KafkaEventProducer.class);
     
     @Autowired
     private KafkaTemplate<String, String> kafkaTemplate;
     
     public void sendMessage(String topic, String message) {
       logger.info("Producing message [{}]", message);
       kafkaTemplate.send(topic, message);
     }
    }
    

  4. काफ्का निर्माता गुणों को कॉन्फ़िगर करें: काफ्का गुणों को अपने application.properties फ़ाइल में कॉन्फ़िगर करें। काफ्का सर्वर के बूटस्ट्रैप सर्वर और उपभोक्ता के लिए आवश्यक किसी भी अतिरिक्त कॉन्फ़िगरेशन गुणों को निर्दिष्ट करें।
  5. एक काफ्का उपभोक्ता श्रोता बनाएँ: अपने आवेदन में एक विधि लागू करें जिसे काफ्का से कोई नया संदेश प्राप्त होने पर कॉल किया जाएगा। स्प्रिंग काफ्का द्वारा प्रदान किए गए काफ्का लिस्टनर एनोटेशन का उपयोग करें।
  6. import org.springframework.kafka.annotation.KafkaListener;
    import org.springframework.stereotype.Component;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    @Component
    public class KafkaEventConsumer {
    
    private static final Logger logger = LoggerFactory.getLogger(KafkaEventConsumer.class);
    
    @KafkaListener(topics = “<topic-name>”, groupId = “<consumer-group-id>”)
     public void consumeMessage(String message) {
      //Use log
     log.info("Consumed message [{}]", message);
     }
    }
    
    

    @KafkaListener(topics = “${spring.kafka.app.topic}”,groupId= “${spring.kafka.consumer.group-id}”)
    

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MainApplication {

 @Autowired
 private KafkaEventProducer kafkaEventProducer;

 public static void main(String[] args) {
   SpringApplication.run(MainApplication.class, args);
 }
 
 public void YourMethod() {
 // Send a message using the Kafka producer
 kafkaEventProducer.sendMessage(“<topic-name>”, “Oh Kafka Boy How'z Everything?”);
 }
}

निष्कर्ष

अंत में, स्प्रिंग बूट आपके अनुप्रयोगों में अपाचे काफ्का को एकीकृत करने के लिए उत्कृष्ट सहायता प्रदान करता है। स्प्रिंग बूट के काफ्का समर्थन के साथ, आप आसानी से काफ्का निर्माता और उपभोक्ता बना सकते हैं, काफ्का गुणों को कॉन्फ़िगर कर सकते हैं और संदेश प्रसंस्करण को संभाल सकते हैं।
काफ्का के साथ स्प्रिंग बूट का एकीकरण काफ्का-आधारित अनुप्रयोगों के विकास को सरल करता है, उच्च स्तर की अमूर्तता प्रदान करता है और आवश्यक बॉयलरप्लेट कोड की मात्रा को कम करता है।

और कोड चलाने से पहले, कृपया सुनिश्चित करें कि काफ्का सर्वर चल रहा है और विषय बनाए गए हैं।

नोट: स्प्रिंग बूट में काफ्का एकीकरण के लिए उपलब्ध विभिन्न विशेषताओं और विकल्पों को बेहतर ढंग से समझने के लिए आधिकारिक स्प्रिंग काफ्का प्रलेखन को देखें और स्प्रिंग काफ्का के नमूनों का पता लगाएं।

धन्यवाद!