Springboot 마이크로서비스 프로젝트가 Kafka를 통합하여 기사 업로드 및 목록 삭제 기능을 구현하는 방법
One: Kafka 메시지 보내기 빠른 시작
1. 문자열 메시지 전달
(1) 메시지 보내기
컨트롤러 패키지 만들기 및 메시지 보내기를 위한 테스트 클래스 작성
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"; } }
(2) 메시지 듣기
쓰기 test 클래스는 메시지를 수신하는 데 사용됩니다.
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); } } }
(3) 테스트 결과
브라우저를 열고 localhost:9991/hello를 입력한 후 콘솔로 이동하여 메시지를 보면 성공적인 메시지가 모니터링되는 것을 볼 수 있습니다. 그리고 소비되었습니다.
2. 개체 메시지 전달
현재 springboot 통합 kafka는 직렬 변환기가 StringSerializer이기 때문에 이때 개체를 전달해야 하는 경우 두 가지 방법이 있습니다.
방법 1: 직렬 변환기를 사용자 정의할 수 있습니다. 객체 유형은 다양하며 이 방법은 그다지 다양하지 않으므로 여기서는 소개하지 않습니다.
방법 2: 전송할 객체를 json 문자열로 변환한 후 메시지를 받은 후 객체로 변환하는 방법이 이 프로젝트에서 사용됩니다.
(1) 생산자 코드 수정
@GetMapping("hello") public String helloProducer(){ User user = new User(); user.setName("赵四"); user.setAge(20); kafkaTemplate.send("my-topic", JSON.toJSONString(user)); return "ok"; }
(2) 결과 테스트
객체 매개변수를 성공적으로 수신한 것을 볼 수 있으며, 나중에 객체를 사용하려면 User 객체로 변환하기만 하면 됩니다.
둘: 기능 소개
1. 요구사항 분석
글을 게시한 후, 글에 오류나 기타 사유가 있을 수 있습니다. 글 관리 측면에서 글의 업로드 및 삭제 기능을 구현하겠습니다. 아래 그림), 즉, 관리 측이 서가에서 기사를 제거하면 기사가 더 이상 모바일 측에 표시되지 않습니다. 기사가 다시 나열된 후에야 모바일 측에서 기사 정보를 볼 수 있습니다.
2. 논리적 분석
백엔드에서 전달된 매개변수를 받은 후 먼저 매개변수가 비어 있지 않으면 실행을 계속해야 합니다. (위미디어측 기사 ID) 프론트엔드에서 전달한 기사 ID를 기준으로 자체 미디어 데이터베이스의 기사 정보를 조회하여 기사 게재 여부를 판단합니다. 업로드 및 삭제되었습니다. 셀프 미디어 측 마이크로서비스는 기사 업 및 다운 상태를 수정한 후 Kafka에 메시지를 보낼 수 있습니다. 메시지는 Map 객체이며 여기에 저장된 데이터는 모바일 단말기의 업 및 다운 매개변수입니다. 물론 이 메시지는 프런트엔드에서 전달되어야 합니다. Map 객체는 JSON 문자열로 변환된 후 전송될 수 있습니다.
기사 마이크로서비스는 Kafka가 보낸 메시지를 수신하고 JSON 문자열을 Map 객체로 변환한 다음 관련 매개변수를 가져와 모바일 기사의 업 및 다운 상태를 수정합니다.
Three: 준비
1. 종속성 소개
<!-- kafkfa --> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> </dependency>
2. 상수 정의
package com.my.common.constans; public class WmNewsMessageConstants { public static final String WM_NEWS_UP_OR_DOWN_TOPIC="wm.news.up.or.down.topic"; }
3.Kafka 구성 정보
Nacos를 등록 센터로 사용하므로 구성 정보는 Nacos에 배치할 수 있습니다.
(1) 셀프 미디어 단말기 구성
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
(2) 모바일 단말기 구성
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
4: 코드 구현
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); }
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); } } }
(2) 뉴스 받기 및 기사 상태 수정
/** * 文章上下架 * @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); }
위 내용은 Springboot 마이크로서비스 프로젝트가 Kafka를 통합하여 기사 업로드 및 목록 삭제 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











인터넷과 기술의 발달로 디지털 투자에 대한 관심이 높아지고 있습니다. 많은 투자자들은 더 높은 투자 수익을 얻기 위해 계속해서 투자 전략을 탐색하고 연구합니다. 주식거래에 있어서 실시간 주식분석은 의사결정에 매우 중요한데, Kafka 실시간 메시지 큐와 PHP 기술을 활용하는 것은 효율적이고 실용적인 수단이다. 1. Kafka 소개 Kafka는 LinkedIn에서 개발한 처리량이 높은 분산 게시 및 구독 메시징 시스템입니다. 카프카의 주요 기능은 다음과 같습니다.

SpringBoot와 SpringMVC는 모두 Java 개발에서 일반적으로 사용되는 프레임워크이지만 둘 사이에는 몇 가지 분명한 차이점이 있습니다. 이 기사에서는 이 두 프레임워크의 기능과 용도를 살펴보고 차이점을 비교할 것입니다. 먼저 SpringBoot에 대해 알아봅시다. SpringBoot는 Spring 프레임워크를 기반으로 하는 애플리케이션의 생성 및 배포를 단순화하기 위해 Pivotal 팀에서 개발되었습니다. 독립 실행형 실행 파일을 구축하는 빠르고 가벼운 방법을 제공합니다.

Kafka 시각화 도구를 위한 다섯 가지 옵션 ApacheKafka는 대량의 실시간 데이터를 처리할 수 있는 분산 스트림 처리 플랫폼입니다. 실시간 데이터 파이프라인, 메시지 대기열 및 이벤트 기반 애플리케이션을 구축하는 데 널리 사용됩니다. Kafka의 시각화 도구는 사용자가 Kafka 클러스터를 모니터링 및 관리하고 Kafka 데이터 흐름을 더 잘 이해하는 데 도움이 될 수 있습니다. 다음은 널리 사용되는 5가지 Kafka 시각화 도구에 대한 소개입니다.

이 글에서는 dubbo+nacos+Spring Boot의 실제 개발에 대해 이야기하기 위해 자세한 예제를 작성하겠습니다. 이 기사에서는 이론적 지식을 너무 많이 다루지는 않지만 dubbo를 nacos와 통합하여 개발 환경을 신속하게 구축하는 방법을 설명하는 가장 간단한 예를 작성합니다.

올바른 Kafka 시각화 도구를 선택하는 방법은 무엇입니까? 다섯 가지 도구 비교 분석 소개: Kafka는 빅데이터 분야에서 널리 사용되는 고성능, 높은 처리량의 분산 메시지 대기열 시스템입니다. Kafka의 인기로 인해 점점 더 많은 기업과 개발자가 Kafka 클러스터를 쉽게 모니터링하고 관리하기 위한 시각적 도구를 필요로 하고 있습니다. 이 기사에서는 일반적으로 사용되는 5가지 Kafka 시각화 도구를 소개하고 각 기능을 비교하여 독자가 자신의 필요에 맞는 도구를 선택할 수 있도록 돕습니다. 1. 카프카매니저

RockyLinux에 ApacheKafka를 설치하려면 다음 단계를 수행할 수 있습니다. 시스템 업데이트: 먼저 RockyLinux 시스템이 최신인지 확인하고 다음 명령을 실행하여 시스템 패키지를 업데이트합니다. sudoyumupdate Java 설치: ApacheKafka는 Java에 의존하므로 먼저 JDK(Java Development Kit)를 설치해야 합니다. OpenJDK는 다음 명령을 통해 설치할 수 있습니다. sudoyuminstalljava-1.8.0-openjdk-devel 다운로드 및 압축 해제: ApacheKafka 공식 웹사이트()를 방문하여 최신 바이너리 패키지를 다운로드합니다. 안정적인 버전을 선택하세요

React 및 Apache Kafka를 사용하여 실시간 데이터 처리 애플리케이션을 구축하는 방법 소개: 빅 데이터 및 실시간 데이터 처리가 증가함에 따라 실시간 데이터 처리 애플리케이션 구축은 많은 개발자의 추구 사항이 되었습니다. 널리 사용되는 프런트엔드 프레임워크인 React와 고성능 분산 메시징 시스템인 Apache Kafka의 조합은 실시간 데이터 처리 애플리케이션을 구축하는 데 도움이 될 수 있습니다. 이 기사에서는 React와 Apache Kafka를 사용하여 실시간 데이터 처리 애플리케이션을 구축하는 방법을 소개합니다.

springBoot 프로젝트에서 일반적으로 사용되는 디렉터리 구조와 SpringBoot 개발 시의 네이밍 사양을 바탕으로 실제 디렉터리 구조를 계획하는 방법을 소개합니다. 프로젝트? 디렉토리 이름을 좀 더 표준화하는 방법은 무엇입니까? 각 디렉토리는 무엇을 의미합니까? 세 가지 질문을 기다리십시오. 디렉터리 설명 servicex//프로젝트 이름|-admin-ui//관리 서비스 프런트엔드 코드(일반적으로 관리하기 쉽도록 UI와 SERVICE를 하나의 프로젝트에 넣음)|-servicex-auth//모듈 1|-servicex-common// 모듈 2|-servicex-gateway//모듈 3|
