Table des matières
Un : Démarrage rapide de l'envoi de messages Kafka
1. Passer un message de chaîne
(1) Envoyer un message
(2) Écouter les messages
(3) Résultats du test
2. Passer des messages d'objet
(1) Modifier le code producteur
(2) Résultat du test
Deux : Introduction à la fonction
1. Analyse des exigences
2. Analyse logique
Trois : Préparation
1. Introduire les dépendances
2 Définir les constantes
3.Informations de configuration Kafka
Quatre : Implémentation du code
1 Terminal auto-média
2.
Maison Java javaDidacticiel Comment le projet de microservice Springboot intègre Kafka pour implémenter les fonctions de téléchargement et de suppression d'articles

Comment le projet de microservice Springboot intègre Kafka pour implémenter les fonctions de téléchargement et de suppression d'articles

May 16, 2023 pm 08:52 PM
springboot kafka

Un : Démarrage rapide de l'envoi de messages Kafka

1. Passer un message de chaîne

(1) Envoyer un message

Créer un package Controller et écrire une classe de test pour envoyer des messages

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";
    }
}
Copier après la connexion
(2) Écouter les messages

Écrire un test La classe est utilisée pour recevoir des messages :

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);
        }
    }
}
Copier après la connexion
(3) Résultats du test

Ouvrez le navigateur et entrez localhost:9991/hello, puis accédez à la console pour afficher le message. Vous pouvez voir que le message réussi a été surveillé. et consommé.

Comment le projet de microservice Springboot intègre Kafka pour implémenter les fonctions de téléchargement et de suppression darticles

2. Passer des messages d'objet

Kafka est actuellement intégré à Springboot, car le sérialiseur est StringSerializer, si vous devez transmettre l'objet à ce moment-là, il existe deux manières :

Méthode 1 : Vous pouvez personnaliser le sérialiseur, Il existe de nombreux types d’objets, et cette méthode n’est pas très polyvalente et ne sera pas présentée ici.

Méthode 2 : Vous pouvez convertir l'objet à transférer en chaîne json, puis le convertir en objet après réception du message. Cette méthode est utilisée dans ce projet.

(1) Modifier le code producteur
@GetMapping("hello")
public String helloProducer(){
    User user = new User();
    user.setName("赵四");
    user.setAge(20);
    kafkaTemplate.send("my-topic", JSON.toJSONString(user));
    return "ok";
}
Copier après la connexion
(2) Résultat du test

Comment le projet de microservice Springboot intègre Kafka pour implémenter les fonctions de téléchargement et de suppression darticles

Vous pouvez voir que les paramètres de l'objet sont reçus avec succès Pour utiliser l'objet ultérieurement, il vous suffit de le convertir en objet Utilisateur.

Deux : Introduction à la fonction

1. Analyse des exigences

Après la publication d'un article, il peut y avoir des erreurs ou d'autres raisons dans l'article. Nous mettrons en œuvre la fonction de téléchargement et de suppression de l'article du côté de la gestion des articles (voir le). image ci-dessous), c'est-à-dire que lorsque le côté gestion retire un article des étagères, l'article ne sera plus affiché sur l'extrémité mobile. Ce n'est qu'une fois l'article réinscrit que les informations sur l'article peuvent être vues sur l'extrémité mobile.

Comment le projet de microservice Springboot intègre Kafka pour implémenter les fonctions de téléchargement et de suppression darticles

2. Analyse logique

Comment le projet de microservice Springboot intègre Kafka pour implémenter les fonctions de téléchargement et de suppression darticles

Après avoir reçu les paramètres transmis par le front-end, le back-end doit d'abord effectuer une vérification. Si les paramètres ne sont pas vides, l'exécution peut continuer. en fonction de l'identifiant de l'article transmis par le front-end. (ID d'article côté We-media) Interrogez les informations sur l'article de la base de données self-media et déterminez si l'article a été publié, car seuls les articles qui ont été examinés et publiés avec succès peuvent l'être. téléchargé et supprimé. Une fois que le microservice côté auto-média a modifié l'état de téléchargement et de suppression de l'article, il peut envoyer un message à Kafka. Le message est un objet Map. Les données qui y sont stockées sont l'identifiant de l'article du terminal mobile et le paramètre d'activation transmis. depuis le front-end. Bien sûr, ce message doit être envoyé. L'objet Map peut être envoyé après avoir été converti en chaîne JSON.

Le microservice d'article écoute le message envoyé par Kafka, convertit la chaîne JSON en un objet Map, puis obtient les paramètres pertinents pour modifier l'état haut et bas de l'article mobile.

Trois : Préparation

1. Introduire les dépendances

<!-- kafkfa -->
<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
</dependency>
Copier après la connexion

2 Définir les constantes

package com.my.common.constans;
public class WmNewsMessageConstants {
    public static final String WM_NEWS_UP_OR_DOWN_TOPIC="wm.news.up.or.down.topic";
}
Copier après la connexion

3.Informations de configuration Kafka

Puisque j'utilise Nacos comme centre d'enregistrement, les informations de configuration peuvent être placées sur Nacos.

(1) Configuration du terminal auto-média

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
Copier après la connexion

(2) Configuration du terminal mobile

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
Copier après la connexion

Quatre : Implémentation du code

1 Terminal auto-média

@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);
}
Copier après la connexion

2.

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);
        }
    }
}
Copier après la connexion

(2) Recevez des actualités et modifiez le statut de l'article

/**
* 文章上下架
* @param message
* @return
*/
@Override
public ResponseResult downOrUp(String message) {
    Map map = JSON.parseObject(message, Map.class);
    //获取文章id
    Long articleId = (Long) map.get("articleId");
    //获取文章待修改状态
    Integer enable = (Integer) map.get("enable");
    //查询文章配置
    ApArticleConfig apArticleConfig = apArticleConfigMapper.selectOne
            (Wrappers.<ApArticleConfig>lambdaQuery().eq(ApArticleConfig::getArticleId, articleId));
    if(apArticleConfig != null) {
        //上架
        if(enable == 1) {
            log.info("文章重新上架");
            apArticleConfig.setIsDown(false);
            apArticleConfigMapper.updateById(apArticleConfig);
        }
        //下架
        if(enable == 0) {
            log.info("文章下架");
            apArticleConfig.setIsDown(true);
            apArticleConfigMapper.updateById(apArticleConfig);
        }
    }
    else {
        throw new RuntimeException("文章信息不存在");
    }
    return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment mettre en œuvre une analyse boursière en temps réel à l'aide de PHP et Kafka Comment mettre en œuvre une analyse boursière en temps réel à l'aide de PHP et Kafka Jun 28, 2023 am 10:04 AM

Avec le développement d’Internet et de la technologie, l’investissement numérique est devenu un sujet de préoccupation croissant. De nombreux investisseurs continuent d’explorer et d’étudier des stratégies d’investissement, dans l’espoir d’obtenir un retour sur investissement plus élevé. Dans le domaine du trading d'actions, l'analyse boursière en temps réel est très importante pour la prise de décision, et l'utilisation de la file d'attente de messages en temps réel Kafka et de la technologie PHP constitue un moyen efficace et pratique. 1. Introduction à Kafka Kafka est un système de messagerie distribué de publication et d'abonnement à haut débit développé par LinkedIn. Les principales fonctionnalités de Kafka sont

Comparaison et analyse des différences entre SpringBoot et SpringMVC Comparaison et analyse des différences entre SpringBoot et SpringMVC Dec 29, 2023 am 11:02 AM

SpringBoot et SpringMVC sont tous deux des frameworks couramment utilisés dans le développement Java, mais il existe des différences évidentes entre eux. Cet article explorera les fonctionnalités et les utilisations de ces deux frameworks et comparera leurs différences. Tout d’abord, découvrons SpringBoot. SpringBoot a été développé par l'équipe Pivotal pour simplifier la création et le déploiement d'applications basées sur le framework Spring. Il fournit un moyen rapide et léger de créer des fichiers exécutables autonomes.

Comment créer des applications de traitement de données en temps réel à l'aide de React et Apache Kafka Comment créer des applications de traitement de données en temps réel à l'aide de React et Apache Kafka Sep 27, 2023 pm 02:25 PM

Comment utiliser React et Apache Kafka pour créer des applications de traitement de données en temps réel Introduction : Avec l'essor du Big Data et du traitement de données en temps réel, la création d'applications de traitement de données en temps réel est devenue la priorité de nombreux développeurs. La combinaison de React, un framework front-end populaire, et d'Apache Kafka, un système de messagerie distribué hautes performances, peut nous aider à créer des applications de traitement de données en temps réel. Cet article expliquera comment utiliser React et Apache Kafka pour créer des applications de traitement de données en temps réel, et

Tutoriel pratique de développement SpringBoot+Dubbo+Nacos Tutoriel pratique de développement SpringBoot+Dubbo+Nacos Aug 15, 2023 pm 04:49 PM

Cet article écrira un exemple détaillé pour parler du développement réel de dubbo+nacos+Spring Boot. Cet article ne couvrira pas trop de connaissances théoriques, mais écrira l'exemple le plus simple pour illustrer comment dubbo peut être intégré à nacos pour créer rapidement un environnement de développement.

Cinq sélections d'outils de visualisation pour explorer Kafka Cinq sélections d'outils de visualisation pour explorer Kafka Feb 01, 2024 am 08:03 AM

Cinq options pour les outils de visualisation Kafka ApacheKafka est une plateforme de traitement de flux distribué capable de traiter de grandes quantités de données en temps réel. Il est largement utilisé pour créer des pipelines de données en temps réel, des files d'attente de messages et des applications basées sur des événements. Les outils de visualisation de Kafka peuvent aider les utilisateurs à surveiller et gérer les clusters Kafka et à mieux comprendre les flux de données Kafka. Ce qui suit est une introduction à cinq outils de visualisation Kafka populaires : ConfluentControlCenterConfluent

Analyse comparative des outils de visualisation kafka : Comment choisir l'outil le plus approprié ? Analyse comparative des outils de visualisation kafka : Comment choisir l'outil le plus approprié ? Jan 05, 2024 pm 12:15 PM

Comment choisir le bon outil de visualisation Kafka ? Analyse comparative de cinq outils Introduction : Kafka est un système de file d'attente de messages distribué à haute performance et à haut débit, largement utilisé dans le domaine du Big Data. Avec la popularité de Kafka, de plus en plus d'entreprises et de développeurs ont besoin d'un outil visuel pour surveiller et gérer facilement les clusters Kafka. Cet article présentera cinq outils de visualisation Kafka couramment utilisés et comparera leurs caractéristiques et fonctions pour aider les lecteurs à choisir l'outil qui répond à leurs besoins. 1. KafkaManager

La pratique du go-zero et Kafka+Avro : construire un système de traitement de données interactif performant La pratique du go-zero et Kafka+Avro : construire un système de traitement de données interactif performant Jun 23, 2023 am 09:04 AM

Ces dernières années, avec l'essor du Big Data et des communautés open source actives, de plus en plus d'entreprises ont commencé à rechercher des systèmes de traitement de données interactifs hautes performances pour répondre aux besoins croissants en matière de données. Dans cette vague de mises à niveau technologiques, le go-zero et Kafka+Avro suscitent l’attention et sont adoptés par de plus en plus d’entreprises. go-zero est un framework de microservices développé sur la base du langage Golang. Il présente les caractéristiques de hautes performances, de facilité d'utilisation, d'extension facile et de maintenance facile. Il est conçu pour aider les entreprises à créer rapidement des systèmes d'applications de microservices efficaces. sa croissance rapide

Comment installer Apache Kafka sur Rocky Linux ? Comment installer Apache Kafka sur Rocky Linux ? Mar 01, 2024 pm 10:37 PM

Pour installer ApacheKafka sur RockyLinux, vous pouvez suivre les étapes suivantes : Mettre à jour le système : Tout d'abord, assurez-vous que votre système RockyLinux est à jour, exécutez la commande suivante pour mettre à jour les packages système : sudoyumupdate Installer Java : ApacheKafka dépend de Java, vous vous devez d'abord installer JavaDevelopmentKit (JDK). OpenJDK peut être installé via la commande suivante : sudoyuminstalljava-1.8.0-openjdk-devel Télécharger et décompresser : Visitez le site officiel d'ApacheKafka () pour télécharger le dernier package binaire. Choisissez une version stable

See all articles