【Kafka】spring-kafka 简单demo实现

概述

Kafka 是现今比较流行的一个异步消息队列处理中间件,经过多年来的发展和完善,已经相对比较成熟,对于大量消息数据的具有较高的性能支持。在 SpringBoot 项目中,常用的 kafka 实现主要有两种方式:一种是 SpringBoot 提供的 spring-kafka,另一种的 Apache 提供的 kafka-clients。对于 SpringBoot 项目,一般都推荐使用 spring-kafka。

Spring-kafka 项目实际上在其内部封装了 Apache 的 kafka-client,便于在 Spring 项目中快速继承 kafka。除了基本的消息队列处理外,spring-kafka 还提供了其他功能,详情可以参考项目源码:

https://github.com/spring-projects/spring-kafka

接入服务demo

首先引入 spring-kafka 的 maven 依赖:

<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
</dependency>

紧接着添加 kafka 服务器配置(这里默认本地启动了一个 kafka 服务):

kafka.servers=127.0.0.1:9092

由于其他配置都存在默认初始化配置,因此我们可以只配置一个简单的生产者模板,然后直接写一个简单的 Controller 接口调用 kafka 发送服务:

@Configuration
@EnableKafka
public class DemoKafkaProducerConfig {
    
    @Value("${kafka.servers}")
    private String servers;
    
    @Bean
    public KafkaTemplate<String, Object> producerTemplate() {
        return new KafkaTemplate<>(producerTemplateFactory());
    }
    
    private ProducerFactory<String, Object> producerTemplateFactory() {
        return new DefaultKafkaProducerFactory<>(producerConfigs());
    }
    
    private Map<String, Object> producerConfigs() {
         Map<String, Object> props = new HashMap<>(4);
        // kafka 服务器地址
        props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, servers);
        // 消息序列化类型
        props.put(ConsumerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
        props.put(ConsumerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
        
        return props;
    }
}
@RestController
public class KafkaController {

	private final Logger logger = LoggerFactory.getLogger(KafkaController.class);

	@Autowired
	private KafkaTemplate<Object, Object> template;

	@GetMapping("/kafka/send_demo")
	public void sendDemo(String input) {
		this.template.send("demo_topic", input);
	}
    
	@KafkaListener(id = "demo_group_id", topics = "demo_topic")
	public void consume(String msg) {
		logger.info("Consume message is: {}" , msg);
	}
}

最后,就是在启动类前面加上 @EnableKafka 这个注解启动 kafka 服务,然后运行项目即可。

@EnableKafka
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class. args);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值