java集成kafka依赖包怎么导入_Spring Boot集成kafka完整版

本文介绍了如何在 Spring Boot 应用中集成 Kafka,包括添加 Maven 依赖,配置 YAML 属性文件,设置生产者和消费者的序列化器,创建 KafkaTopicProperties 和 KafkaTopicConfiguration,以及编写 KafkaTemplate 相关的 service 来发送和接收消息。
摘要由CSDN通过智能技术生成

添加maven依赖

org.springframework.boot

spring-boot-starter-parent

2.0.2.RELEASE

org.springframework.kafka

spring-kafka

spring boot会自动配置kafka,接下来只要配置yml属性文件和主题名配置。

配置yml属性文件

spring:

kafka:

bootstrap-servers: 127.0.0.1:9092,127.0.0.2:9092,127.0.0.3:9092

producer:

retries: 0

batch-size: 16384

buffer-memory: 33554432

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

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

properties:

linger.ms: 1

consumer:

enable-auto-commit: false

auto-commit-interval: 100ms

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

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

properties:

session.timeout.ms: 15000

配置主题和消费者组

kafka:

topic:

group-id: topicGroupId

topic-name:

- topic1

- topic2

- topic3

新建KafkaTopicProperties

@ConfigurationProperties("kafka.topic")

public class KafkaTopicProperties implements Serializable {

private String groupId;

private String[] topicName;

public String getGroupId() {

return groupId;

}

public void setGroupId(String groupId) {

this.groupId = groupId;

}

public String[] getTopicName() {

return topicName;

}

public void setTopicName(String[] topicName) {

this.topicName = topicName;

}

添加KafkaTopicConfiguration

@Configuration

@EnableConfigurationProperties(KafkaTopicProperties.class)

public class KafkaTopicConfiguration {

private final KafkaTopicProperties properties;

public KafkaTopicConfiguration(KafkaTopicProperties properties) {

this.properties = properties;

}

@Bean

public String[] kafkaTopicName() {

return properties.getTopicName();

}

@Bean

public String topicGroupId() {

return properties.getGroupId();

}

}

添加自己的service

@Service

public class IndicatorService {

private Logger LOG = LoggerFactory.getLogger(IndicatorService.class);

private final KafkaTemplate kafkaTemplate;

/**

* 注入KafkaTemplate

* @param kafkaTemplate kafka模版类

*/

@Autowired

public IndicatorService(KafkaTemplate kafkaTemplate) {

this.kafkaTemplate = kafkaTemplate;

}

@KafkaListener(topics = "#{kafkaTopicName}", groupId = "#{topicGroupId}")

public void processMessage(ConsumerRecord record) {

LOG.info("kafka processMessage start");

LOG.info("processMessage, topic = {}, msg = {}", record.topic(), record.value());

// do something ...

properties.getProperties();

LOG.info("kafka processMessage end");

}

public void sendMessage(String topic, String data) {

LOG.info("kafka sendMessage start");

ListenableFuture> future = kafkaTemplate.send(topic, data);

future.addCallback(new ListenableFutureCallback>() {

@Override

public void onFailure(Throwable ex) {

LOG.error("kafka sendMessage error, ex = {}, topic = {}, data = {}", ex, topic, data);

}

@Override

public void onSuccess(SendResult result) {

LOG.info("kafka sendMessage success topic = {}, data = {}",topic, data);

}

});

LOG.info("kafka sendMessage end");

}

}

至此就可以跑起来了,有什么不明白的可以留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值