Jadual Kandungan
Langkah 1: Tambah kebergantungan
Langkah 2: Konfigurasikan Kafka
Langkah 3: Buat penerbit
Langkah 4: Buat pengguna
Rumah Java javaTutorial Bagaimana Spring Boot menyepadukan Kafka

Bagaimana Spring Boot menyepadukan Kafka

Jun 02, 2023 pm 02:18 PM
springboot kafka

Langkah 1: Tambah kebergantungan

Tambah kebergantungan berikut dalam pom.xml:

<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
    <version>2.8.0</version>
</dependency>
Salin selepas log masuk

Langkah 2: Konfigurasikan Kafka

Tambah dalam fail application.yml Perkara berikut konfigurasi:

sping:
  kafka:
    bootstrap-servers: localhost:9092
    consumer:
      group-id: my-group
      auto-offset-reset: earliest
    producer:
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
Salin selepas log masuk

Di sini kami mengkonfigurasi alamat perkhidmatan Kafka sebagai localhost:9092, mengkonfigurasi ID kumpulan pengguna sebagai my-group dan menetapkan offset terawal untuk membaca mesej. Di pihak pengeluar, kami mengkonfigurasi penyeri mesej sebagai StringSerializer.

Langkah 3: Buat penerbit

Kami kini akan mencipta pengeluar Kafka untuk menghantar mesej ke pelayan Kafka. Di sini kami akan membuat titik akhir API RESTful untuk menerima permintaan POST dan menghantar mesej kepada Kafka.

Pertama, kami akan mencipta kelas KafkaProducerConfig yang akan digunakan untuk mengkonfigurasi pengeluar Kafka:

@Configuration
public class KafkaProducerConfig {
    @Value("${spring.kafka.bootstrap-servers}")
    private String bootstrapServers;
    @Bean
    public Map<String, Object> producerConfigs() {
        Map<String, Object> props = new HashMap<>();
        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
        return props;
    }
    @Bean
    public ProducerFactory<String, String> producerFactory() {
        return new DefaultKafkaProducerFactory<>(producerConfigs());
    }
    @Bean
    public KafkaTemplate<String, String> kafkaTemplate() {
        return new KafkaTemplate<>(producerFactory());
    }
}
Salin selepas log masuk

Dalam kod di atas, kami menggunakan anotasi @Configuration untuk mengisytiharkan KafkaProducerConfig kelas sebagai kelas Konfigurasi. Kami kemudian menyuntik atribut @Value dalam fail konfigurasi menggunakan anotasi bootstrap-servers.

Seterusnya, kami mencipta kaedah producerConfigs yang menetapkan konfigurasi pengeluar Kafka. Di sini, kami menetapkan tiga atribut BOOTSTRAP_SERVERS_CONFIG, KEY_SERIALIZER_CLASS_CONFIG dan VALUE_SERIALIZER_CLASS_CONFIG.

Kemudian, kami mencipta kaedah producerFactory yang mencipta kilang pengeluar Kafka. Di sini kami telah menggunakan kelas DefaultKafkaProducerFactory dan lulus konfigurasi kami.

Akhir sekali, kami mencipta kaedah kafkaTemplate yang mencipta kejadian KafkaTemplate. Di sini, kami menggunakan kilang pengeluar yang baru kami buat sebagai parameter dan mengembalikan contoh KafkaTemplate.

Seterusnya, kami akan mencipta titik akhir RESTful yang menerima permintaan POST dan menghantar mesej kepada Kafka. Di sini, kami akan mencipta pengawal RESTful menggunakan anotasi @RestController:

@RestController
public class KafkaController {
    @Autowired
    private KafkaTemplate<String, String> kafkaTemplate;
    @PostMapping("/send")
    public void sendMessage(@RequestBody String message) {
        kafkaTemplate.send("my-topic", message);
    }
}
Salin selepas log masuk

Dalam kod di atas, kami telah menggunakan anotasi @Autowired untuk menyuntik tika KafkaTemplate ke dalam kelas KafkaController. Kemudian, kami mencipta kaedah sendMessage untuk menghantar mesej kepada Kafka.

Di sini kami menggunakan kaedah kafkaTemplate.send untuk menghantar mesej kepada topik my-topic. Kaedah hantar mengembalikan objek ListenableFuture untuk pemprosesan hasil tak segerak.

Langkah 4: Buat pengguna

Sekarang, kami akan mencipta pengguna Kafka untuk menerima mesej daripada pelayan Kafka. Di sini kami akan membuat kumpulan pengguna dan mengkonfigurasinya untuk membaca mesej daripada topik my-topic.

Pertama, kami akan mencipta kelas KafkaConsumerConfig yang akan digunakan untuk mengkonfigurasi pengguna Kafka:

@Configuration
@EnableKafka
public class KafkaConsumerConfig {
    @Value("${spring.kafka.bootstrap-servers}")
    private String bootstrapServers;
    @Value("${spring.kafka.consumer.group-id}")
    private String groupId;
    @Bean
    public Map<String, Object> consumerConfigs() {
        Map<String, Object> props = new HashMap<>();
        props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
        props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);
        props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
        props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
        props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
        return props;
    }
    @Bean
    public ConsumerFactory<String, String> consumerFactory() {
        return new DefaultKafkaConsumerFactory<>(consumerConfigs());
    }
    @Bean
    public ConcurrentKafkaListenerContainerFactory<String, String> kafkaListenerContainerFactory() {
        ConcurrentKafkaListenerContainerFactory<String, String> factory = new ConcurrentKafkaListenerContainerFactory<>();
        factory.setConsumerFactory(consumerFactory());
        return factory;
    }
}
Salin selepas log masuk

Dalam kod di atas, kami menggunakan anotasi @Configuration untuk mengisytiharkan KafkaConsumerConfig kelas sebagai Konfigurasikan kelas dan dayakan Kafka menggunakan anotasi @EnableKafka.

Kemudian, kami menggunakan anotasi @Value untuk menyuntik atribut bootstrap-servers dan consumer.group-id dalam fail konfigurasi.

Seterusnya, kami mencipta kaedah consumerConfigs yang menetapkan konfigurasi pengguna Kafka. Di sini, kami menetapkan lima atribut: BOOTSTRAP_SERVERS_CONFIG、GROUP_ID_CONFIG, AUTO_OFFSET_RESET_CONFIG, KEY_DESERIALIZER_CLASS_CONFIG dan VALUE_DESERIALIZER_CLASS_CONFIG.

Kemudian, kami mencipta kaedah consumerFactory yang mencipta kilang pengguna Kafka. Di sini kami telah menggunakan kelas DefaultKafkaConsumerFactory dan lulus konfigurasi kami.

Akhir sekali, kami mencipta kaedah kafkaListenerContainerFactory yang mencipta tika ConcurrentKafkaListenerContainerFactory. Di sini kami menyuntik kilang pengguna ke dalam contoh kafkaListenerContainerFactory.

Seterusnya, kami akan mencipta kelas pengguna Kafka KafkaConsumer yang mendengar topik my-topic dan menerima mesej:

@Service
public class KafkaConsumer {
    @KafkaListener(topics = "my-topic", groupId = "my-group-id")
    public void consume(String message) {
        System.out.println("Received message: " + message);
    }
}
Salin selepas log masuk

Dalam kod di atas, kami menggunakan @KafkaListener Anotasi mengisytiharkan kaedah pengguna yang menerima mesej yang dibaca daripada topik my-topic. Di sini kami menetapkan ID kumpulan pengguna kepada my-group-id.

Kini, kami telah menyelesaikan penyediaan pengeluar dan pengguna Kafka. Kita boleh memulakan aplikasi menggunakan perintah mvn spring-boot:run dan menghantar permintaan POST ke titik akhir http://localhost:8080/send menggunakan arahan curl untuk menghantar mesej kepada Kafka. Kami kemudiannya boleh melihat mesej yang diterima oleh pengguna pada konsol. Ini ialah persediaan asas untuk menggunakan Spring Boot dan Kafka. Kita boleh berubah dan berkembang mengikut keperluan untuk memenuhi keperluan tertentu.

Atas ialah kandungan terperinci Bagaimana Spring Boot menyepadukan Kafka. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk melaksanakan analisis saham masa nyata menggunakan PHP dan Kafka Bagaimana untuk melaksanakan analisis saham masa nyata menggunakan PHP dan Kafka Jun 28, 2023 am 10:04 AM

Dengan perkembangan Internet dan teknologi, pelaburan digital telah menjadi topik yang semakin membimbangkan. Ramai pelabur terus meneroka dan mengkaji strategi pelaburan, dengan harapan memperoleh pulangan pelaburan yang lebih tinggi. Dalam perdagangan saham, analisis saham masa nyata adalah sangat penting untuk membuat keputusan, dan penggunaan baris gilir mesej masa nyata Kafka dan teknologi PHP adalah cara yang cekap dan praktikal. 1. Pengenalan kepada Kafka Kafka ialah sistem pemesejan terbitan dan langgan yang diedarkan tinggi yang dibangunkan oleh LinkedIn. Ciri-ciri utama Kafka ialah

Analisis perbandingan dan perbezaan antara SpringBoot dan SpringMVC Analisis perbandingan dan perbezaan antara SpringBoot dan SpringMVC Dec 29, 2023 am 11:02 AM

SpringBoot dan SpringMVC adalah kedua-dua rangka kerja yang biasa digunakan dalam pembangunan Java, tetapi terdapat beberapa perbezaan yang jelas antara mereka. Artikel ini akan meneroka ciri dan penggunaan kedua-dua rangka kerja ini dan membandingkan perbezaannya. Mula-mula, mari belajar tentang SpringBoot. SpringBoot telah dibangunkan oleh pasukan Pivotal untuk memudahkan penciptaan dan penggunaan aplikasi berdasarkan rangka kerja Spring. Ia menyediakan cara yang pantas dan ringan untuk membina bersendirian, boleh dilaksanakan

Lima pilihan alat visualisasi untuk meneroka Kafka Lima pilihan alat visualisasi untuk meneroka Kafka Feb 01, 2024 am 08:03 AM

Lima pilihan untuk alat visualisasi Kafka ApacheKafka ialah platform pemprosesan strim teragih yang mampu memproses sejumlah besar data masa nyata. Ia digunakan secara meluas untuk membina saluran paip data masa nyata, baris gilir mesej dan aplikasi dipacu peristiwa. Alat visualisasi Kafka boleh membantu pengguna memantau dan mengurus kelompok Kafka serta lebih memahami aliran data Kafka. Berikut ialah pengenalan kepada lima alat visualisasi Kafka yang popular: ConfluentControlCenterConfluent

Analisis perbandingan alat visualisasi kafka: Bagaimana untuk memilih alat yang paling sesuai? Analisis perbandingan alat visualisasi kafka: Bagaimana untuk memilih alat yang paling sesuai? Jan 05, 2024 pm 12:15 PM

Bagaimana untuk memilih alat visualisasi Kafka yang betul? Analisis perbandingan lima alat Pengenalan: Kafka ialah sistem baris gilir mesej teragih berprestasi tinggi dan tinggi yang digunakan secara meluas dalam bidang data besar. Dengan populariti Kafka, semakin banyak perusahaan dan pembangun memerlukan alat visual untuk memantau dan mengurus kelompok Kafka dengan mudah. Artikel ini akan memperkenalkan lima alat visualisasi Kafka yang biasa digunakan dan membandingkan ciri serta fungsinya untuk membantu pembaca memilih alat yang sesuai dengan keperluan mereka. 1. KafkaManager

Tutorial praktikal pembangunan SpringBoot+Dubbo+Nacos Tutorial praktikal pembangunan SpringBoot+Dubbo+Nacos Aug 15, 2023 pm 04:49 PM

Artikel ini akan menulis contoh terperinci untuk bercakap tentang perkembangan sebenar dubbo+nacos+Spring Boot. Artikel ini tidak akan merangkumi terlalu banyak pengetahuan teori, tetapi akan menulis contoh paling mudah untuk menggambarkan bagaimana dubbo boleh disepadukan dengan nacos untuk membina persekitaran pembangunan dengan cepat.

Bagaimana untuk memasang Apache Kafka pada Rocky Linux? Bagaimana untuk memasang Apache Kafka pada Rocky Linux? Mar 01, 2024 pm 10:37 PM

Untuk memasang ApacheKafka pada RockyLinux, anda boleh mengikuti langkah di bawah: Kemas kini sistem: Pertama, pastikan sistem RockyLinux anda dikemas kini, laksanakan arahan berikut untuk mengemas kini pakej sistem: sudoyumupdate Pasang Java: ApacheKafka bergantung pada Java, jadi anda perlu memasang Java Development Kit (JDK) terlebih dahulu ). OpenJDK boleh dipasang melalui arahan berikut: sudoyuminstalljava-1.8.0-openjdk-devel Muat turun dan nyahmampat: Lawati laman web rasmi ApacheKafka () untuk memuat turun pakej binari terkini. Pilih versi yang stabil

Apakah direktori yang biasa digunakan untuk projek springBoot? Apakah direktori yang biasa digunakan untuk projek springBoot? Jun 27, 2023 pm 01:42 PM

Direktori yang biasa digunakan untuk projek springBoot Struktur direktori dan spesifikasi penamaan projek springBoot diperkenalkan berdasarkan struktur direktori dan spesifikasi penamaan melalui pengenalan, kami boleh membantu anda menyelesaikan masalah tersebut projek? Bagaimana untuk menamakan direktori dengan lebih standard? Apakah maksud setiap direktori? Tunggu tiga soalan. Perihalan direktori servicex//Nama projek|-admin-ui//Kod bahagian hadapan perkhidmatan pengurusan (biasanya UI dan SERVICE dimasukkan ke dalam satu projek untuk pengurusan mudah)|-servicex-auth//Modul 1|-servicex-common// Modul 2|-servicex-gateway//Modul 3|

Amalan go-zero dan Kafka+Avro: membina sistem pemprosesan data interaktif berprestasi tinggi Amalan go-zero dan Kafka+Avro: membina sistem pemprosesan data interaktif berprestasi tinggi Jun 23, 2023 am 09:04 AM

Dalam tahun-tahun kebelakangan ini, dengan peningkatan data besar dan komuniti sumber terbuka yang aktif, semakin banyak perusahaan telah mula mencari sistem pemprosesan data interaktif berprestasi tinggi untuk memenuhi keperluan data yang semakin meningkat. Dalam gelombang peningkatan teknologi ini, go-zero dan Kafka+Avro sedang diberi perhatian dan diterima pakai oleh semakin banyak perusahaan. go-zero ialah rangka kerja mikroperkhidmatan yang dibangunkan berdasarkan bahasa Golang Ia mempunyai ciri-ciri prestasi tinggi, kemudahan penggunaan, pengembangan mudah dan penyelenggaraan yang mudah. ​​Ia direka untuk membantu perusahaan membina sistem aplikasi perkhidmatan mikro yang cekap. pertumbuhannya yang pesat

See all articles