java 微服务 消息推送_springboot整合kafka实现消息推送

本文介绍了如何使用SpringBoot整合Kafka进行消息推送。首先讲解了如何配置Kafka,然后创建公共服务模块springboot-kafka-common,接着分别创建消息生产者springboot-kafka-producer和消费者springboot-kafka-consumer,并提供了详细的配置和代码示例。
摘要由CSDN通过智能技术生成

前言

本篇文章主要介绍的是springboot整合kafka。

安装kafka

创建工程

1.创建一个名为springboot-kafka的pom项目作为父工程,将main和resource文件夹都删除,pom文件添加配置

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.lxg

springboot-kafka

1.0-SNAPSHOT

pom

springboot-kafka

springboot-kafka-common

springboot-kafka-consumer

springboot-kafka-producer

org.springframework.boot

spring-boot-starter-parent

2.1.3.RELEASE

org.springframework.boot

spring-boot-starter-web

org.springframework.kafka

spring-kafka

org.projectlombok

lombok

1.18.12

com.alibaba

fastjson

1.2.67

3.创建公共服务模块

创建一个名为springboot-kafka-common的微服务,打包方式为jar,存放一些公共配置和公共类,如util等

1.配置pom文件

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

com.lxg

springboot-kafka

1.0-SNAPSHOT

4.0.0

springboot-kafka-common

pom文件中以父工程作为父依赖,就不需要额外引入依赖了

2.新建一个user实体类

@Data

public class User implements Serializable {

/**

* id

*/

private Integer id;

/**

* 用户名字

*/

private String username;

/**

* 密码

*/

private String password;

}

3.创建application-common.yml配置文件,主要添加kafka的公共配置

spring:

kafka:

#kafka配置

bootstrap-servers: 192.168.56.102:9092

producer:

retries: 0

# 每次批量发送消息的数量

batch-size: 16384

buffer-memory: 33554432

# 指定消息key和消息体的编解码方式

key-serializer: org.apache.kafka.common.serialization.StringSerializer

value-serializer: org.apache.kafka.common.serialization.StringSerializer

consumer:

# 指定默认消费者group id

group-id: test-consumer-group

auto-offset-reset: earliest

enable-auto-commit: true

auto-commit-interval: 5000

# 指定消息key和消息体的编解码方式

key-deserializer: org.apache.kafka.common.serialization.StringDeserializer

value-deserializer: org.apache.kafka.common.serialization.StringDeserializer

#自己定义的主题名称,在微服务中使用Value注解注入调用,如果kafka中没有该主题,则会自动创建

topic:

userTopic: userInfo

4.创建消息生产者,即创建一个名为springboot-kafka-producer的普通springboot项目

1.pom文件配置

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

com.lxg

springboot-kafka-producer

1.0-SNAPSHOT

4.0.0

com.lxg

springboot-kafka-common

1.0-SNAPSHOT

2.application.yml配置文件,配置端口,设置微服务名称,引入公共服务模块中的application-common.yml

server:

port: 8081

spring:

application:

name: kafka-producer

profiles:

active: common

3.controller层

创建UserController

@Slf4j

@Controller

@RequestMapping("/api/user")

public class UserController {

@Autowired

private UserService userService;

@ResponseBody

@GetMapping("/getUser")

public void getUser() {

userService.sendUserMsg();

log.info("getUser");

}

}

4.service层

创建UserService

public interface UserService {

/**

* 发送用户信息

*

* @return

*/

Boolean sendUserMsg();

}

创建UserServiceImpl

@Slf4j

@Service

public class UserServiceImpl implements UserService {

@Value("${spring.kafka.topic.userTopic}")

private String userTopic;

@Autowired

KafkaTemplate kafkaTemplate;

@Override

public Boolean sendUserMsg() {

User user = new User();

user.setId(1);

user.setUsername("lxg");

user.setPassword("6767167");

kafkaTemplate.send(userTopic, JSONObject.toJSONString(user));

log.info("lxg");

return Boolean.TRUE;

}

}

5.创建启动类

@SpringBootApplication

public class WebApplication {

public static void main(String[] args) {

SpringApplication.run(WebApplication.class, args);

}

}

5.创建消息消费者

1.pom文件

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

com.lxg

springboot-kafka-consumer

1.0-SNAPSHOT

4.0.0

com.lxg

springboot-kafka-common

1.0-SNAPSHOT

2.创建yml配置文件

server:

port: 8082

spring:

application:

name: kafka-consumer

profiles:

active: common

3.创建consumer消费者类

@Slf4j

@Component

public class UserConsumer {

@KafkaListener(topics = {"${spring.kafka.topic.userTopic}"})

public void userConsumer(String message) {

log.info("receive msg " + message);

}

}

4.启动类

@SpringBootApplication

public class ConsumerApplication {

public static void main(String[] args) {

SpringApplication.run(ConsumerApplication.class, args);

}

}

测试

启动producer和consumer两个服务模块

访问producer微服务中的接口 http://localhost:8081/api/user/getUser

会发现consumer微服务中的控制台打印了producer中创建并推送过来的的user实体

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值