在leadnews-wemedia中的pom.xml添加依赖
<!-- kafkfa -->
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
</dependency>
leadnews-wemedia的application.yml加入kafka的配置
spring:
application:
name: leadnews-wemedia
kafka:
bootstrap-servers: 192.168.137.136:9092
producer:
retries: 10
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
在heima-leadnews-wemedia工程下的WmNewsController新增方法
@PostMapping("/api/v1/news/down_or_up")
public ResponseResult downOrUp(@RequestBody WmNewsDto dto){
wmNewsService.downOrUp(dto);
return ResponseResult.ok();
}
在WmNewsService新增方法
WM_NEWS_UP_OR_DOWN_TOPIC
public void downOrUp(WmNewsDto dto);
@Autowired
private KafkaTemplate<String,String> kafkaTemplate;
@Override
public void downOrUp(WmNewsDto dto) {
Integer userId = UserThreadLocalUtils.getUserId();
Integer wmNewsId = dto.getId();
WmNews wmNews1 = getById(wmNewsId);
if(wmNews1.getWmUserId().intValue() != userId.intValue()){
log.error("没有权限操作文章上下架");
throw new LeadException(AppHttpCodeEnum.NO_OPERATOR_AUTH);
}
if(wmNews1.getStatus() != 9){
log.error("文章状态不是发布");
throw new LeadException(AppHttpCodeEnum.NO_OPERATOR_AUTH);
}
Long articleId = wmNews1.getArticleId();
if(articleId == null){
log.error("没有articleid,无法执行上下架");
throw new LeadException(AppHttpCodeEnum.NO_OPERATOR_AUTH);
}
WmNews wmNews = new WmNews();
wmNews.setId(dto.getId());
wmNews.setEnable(dto.getEnable());
boolean b = updateById(wmNews);
Map<String,Long> map = new HashMap<>();
map.put("articleId",articleId);
map.put("enable",dto.getEnable()?1L:0L);
String msg = JsonUtils.toString(map);
kafkaTemplate.send(WM_NEWS_UP_OR_DOWN_TOPIC,msg);
}