Jadual Kandungan
1: Mula Pantas untuk Menghantar Mesej Kafka
1 Lulus Mesej Rentetan
(1) Hantar Mesej
(2) Dengar mesej
(3) Keputusan ujian
2. Menghantar mesej objek
(1) Ubah suai kod pengeluar
(2) Ujian keputusan
Dua: Pengenalan fungsi
1. Analisis keperluan
2. Analisis logik
Tiga: Persediaan awal
1. Memperkenalkan kebergantungan
2 Takrifkan pemalar
3.Maklumat konfigurasi Kafka
Empat: Pelaksanaan kod
1
2. Terminal mudah alih
Rumah Java javaTutorial Bagaimana projek perkhidmatan mikro Springboot menyepadukan Kafka untuk melaksanakan fungsi muat naik dan nyahsenarai artikel

Bagaimana projek perkhidmatan mikro Springboot menyepadukan Kafka untuk melaksanakan fungsi muat naik dan nyahsenarai artikel

May 16, 2023 pm 08:52 PM
springboot kafka

1: Mula Pantas untuk Menghantar Mesej Kafka

1 Lulus Mesej Rentetan

(1) Hantar Mesej

Buat pakej Pengawal dan tulis kelas ujian untuk Hantar. mesej

package com.my.kafka.controller;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
public class HelloController {
    @Autowired
    private KafkaTemplate<String,String> kafkaTemplate;
 
    @GetMapping("hello")
    public String helloProducer(){
        kafkaTemplate.send("my-topic","Hello~");
        return "ok";
    }
}
Salin selepas log masuk
(2) Dengar mesej

Tulis kelas ujian untuk menerima mesej:

package com.my.kafka.listener;
 
import org.junit.platform.commons.util.StringUtils;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;
 
@Component
public class HelloListener {
    @KafkaListener(topics = "my-topic")
    public void helloListener(String message) {
        if(StringUtils.isNotBlank(message)) {
            System.out.println(message);
        }
    }
}
Salin selepas log masuk
(3) Keputusan ujian

Buka input penyemak imbas localhost :9991/hello, dan kemudian pergi ke konsol untuk melihat mesej Anda boleh melihat bahawa mesej yang berjaya telah dipantau dan digunakan.

Bagaimana projek perkhidmatan mikro Springboot menyepadukan Kafka untuk melaksanakan fungsi muat naik dan nyahsenarai artikel

2. Menghantar mesej objek

Kafka bersepadu springboot, kerana penyeri adalah StringSerializer, terdapat dua cara untuk menghantar objek pada masa ini:

Kaedah 1: Anda boleh menyesuaikan serializer dan terdapat banyak jenis objek Kaedah ini tidak begitu serba boleh dan tidak akan diperkenalkan di sini.

Kaedah 2: Anda boleh menukar objek untuk dipindahkan ke dalam rentetan json, dan kemudian menukarnya menjadi objek selepas menerima mesej Kaedah ini digunakan dalam projek ini.

(1) Ubah suai kod pengeluar
@GetMapping("hello")
public String helloProducer(){
    User user = new User();
    user.setName("赵四");
    user.setAge(20);
    kafkaTemplate.send("my-topic", JSON.toJSONString(user));
    return "ok";
}
Salin selepas log masuk
(2) Ujian keputusan

Bagaimana projek perkhidmatan mikro Springboot menyepadukan Kafka untuk melaksanakan fungsi muat naik dan nyahsenarai artikel

Anda boleh melihat bahawa semua parameter objek berjaya diterima , kemudian Untuk menggunakan objek ini, anda hanya perlu menukarnya menjadi objek Pengguna.

Dua: Pengenalan fungsi

1. Analisis keperluan

Selepas menerbitkan artikel, mungkin terdapat beberapa ralat atau sebab lain dalam artikel tersebut sisi pengurusan artikel Fungsi muat naik dan nyahsenarai (lihat gambar di bawah), iaitu, apabila terminal pengurusan mengalih keluar artikel dari rak, terminal mudah alih tidak akan lagi memaparkan artikel Hanya selepas artikel itu disenaraikan semula, artikel itu boleh maklumat boleh dilihat pada terminal mudah alih.

Bagaimana projek perkhidmatan mikro Springboot menyepadukan Kafka untuk melaksanakan fungsi muat naik dan nyahsenarai artikel

2. Analisis logik

Bagaimana projek perkhidmatan mikro Springboot menyepadukan Kafka untuk melaksanakan fungsi muat naik dan nyahsenarai artikel

Selepas bahagian belakang menerima parameter yang diluluskan oleh bahagian hadapan, ia mesti terlebih dahulu melakukan pengesahan , parameter tidak kosong sebelum pelaksanaan boleh diteruskan Pertama, maklumat artikel pangkalan data media kendiri harus ditanya berdasarkan id artikel yang diluluskan dari bahagian hadapan (id artikel akhir media kendiri) dan. menilai sama ada artikel itu telah diterbitkan, kerana hanya semakan yang berjaya dan berjaya Hanya artikel yang diterbitkan boleh dimuat naik atau dialih keluar. Selepas perkhidmatan mikro sisi media kendiri mengubah status muat naik dan nyahsenarai artikel, ia boleh menghantar mesej kepada Kafka Mesej ialah objek Peta Data yang disimpan di dalamnya ialah id artikel terminal mudah alih dan parameter daya yang dihantar dari bahagian hadapan Sudah tentu, mesej ini mestilah objek Peta boleh ditukar menjadi rentetan JSON sebelum ia boleh dihantar.

Selepas mendengar mesej yang dihantar oleh Kafka, perkhidmatan mikro artikel menukar rentetan JSON menjadi objek Peta dan kemudian mendapatkan parameter yang berkaitan untuk mengubah suai status atas dan bawah artikel mudah alih.

Tiga: Persediaan awal

1. Memperkenalkan kebergantungan

<!-- kafkfa -->
<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
</dependency>
Salin selepas log masuk

2 Takrifkan pemalar

package com.my.common.constans;
public class WmNewsMessageConstants {
    public static final String WM_NEWS_UP_OR_DOWN_TOPIC="wm.news.up.or.down.topic";
}
Salin selepas log masuk

3.Maklumat konfigurasi Kafka

Due. kepada saya menggunakan Nacos sebagai pusat pendaftaran, jadi maklumat konfigurasi boleh diletakkan pada Nacos.

(1) Konfigurasi terminal media kendiri

spring:
  kafka:
    bootstrap-servers: 4.234.52.122:9092
    producer:
      retries: 10
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
Salin selepas log masuk

(2) Konfigurasi terminal mudah alih

spring:
  kafka:
    bootstrap-servers: 4.234.52.122:9092
    consumer:
      group-id: ${spring.application.name}-test
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
Salin selepas log masuk

Empat: Pelaksanaan kod

1

@Autowired
private KafkaTemplate<String,String> kafkaTemplate;
/**
 * 文章下架或上架
 * @param id
 * @param enable
 * @return
 */
@Override
public ResponseResult downOrUp(Integer id,Integer enable) {
    log.info("执行文章上下架操作...");
    if(id == null || enable == null) {
        return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);
    }
    //根据id获取文章
    WmNews news = getById(id);
    if(news == null) {
        return ResponseResult.errorResult(AppHttpCodeEnum.DATA_NOT_EXIST,"文章信息不存在");
    }
    //获取当前文章状态
    Short status = news.getStatus();
    if(!status.equals(WmNews.Status.PUBLISHED.getCode())) {
        return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID,"文章非发布状态,不能上下架");
    }
 
    //更改文章状态
    news.setEnable(enable.shortValue());
    updateById(news);
    log.info("更改文章上架状态{}-->{}",status,news.getEnable());
 
    //发送消息到Kafka
    Map<String, Object> map = new HashMap<>();
    map.put("articleId",news.getArticleId());
    map.put("enable",enable.shortValue());
    kafkaTemplate.send(WmNewsMessageConstants.WM_NEWS_UP_OR_DOWN_TOPIC,JSON.toJSONString(map));
    log.info("发送消息到Kafka...");
 
    return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
}
Salin selepas log masuk

2. Terminal mudah alih

(1) Sediakan pendengar

package com.my.article.listener;
 
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.my.article.service.ApArticleService;
import com.my.common.constans.WmNewsMessageConstants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.kafka.annotation.KafkaListener;
 
 
@Slf4j
@Component
public class EnableListener {
    @Autowired
    private ApArticleService apArticleService;
 
    @KafkaListener(topics = WmNewsMessageConstants.WM_NEWS_UP_OR_DOWN_TOPIC)
    public void downOrUp(String message) {
        if(StringUtils.isNotBlank(message)) {
            log.info("监听到消息{}",message);
            apArticleService.downOrUp(message);
        }
    }
}
Salin selepas log masuk

(2) Dapatkan mesej dan ubah suai status artikel

rreee

Atas ialah kandungan terperinci Bagaimana projek perkhidmatan mikro Springboot menyepadukan Kafka untuk melaksanakan fungsi muat naik dan nyahsenarai artikel. 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
4 minggu 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