配置参考
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>2.3.8.RELEASE</version>
</dependency>
spring.kafka.producer.bootstrap-servers=172.29.43.121:9092,172.29.43.121:9093,172.29.43.121:9094
spring.kafka.producer.retries=0
spring.kafka.producer.acks=1
spring.kafka.producer.batch-size=16384
spring.kafka.producer.properties.linger.ms=100
spring.kafka.producer.buffer-memory = 33554432
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.properties.max.request.size=1048576
spring.kafka.consumer.bootstrap-servers=172.29.43.121:9092,172.29.43.121:9093,172.29.43.121:9094
spring.kafka.consumer.enable-auto-commit=false
spring.kafka.consumer.auto.commit.interval.ms=1000
spring.kafka.consumer.auto-offset-reset=latest
spring.kafka.consumer.properties.session.timeout.ms=10000
spring.kafka.consumer.properties.request.timeout.ms=30000
spring.kafka.listener.missing-topics-fatal=false
spring.kafka.consumer.max-poll-records=50
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.listener.ack-mode=manual_immediate
spring.kafka.listener.poll-timeout=50S
demo
@Service
public class KafkaService {
private Logger logger = LoggerFactory.getLogger(KafkaService.class);
@Resource
private KafkaTemplate<Object, Object> template;
public void sendInfo(String topic,String data) {
template.send(topic, data);
logger.info("{}:{}",topic,data);
}
public void sendProducerInfo(String topic,String data) {
ProducerRecord<Object, Object> pr = new ProducerRecord<>(topic, data);
template.send(pr);
logger.info("{}:{}",topic,data);
}
@KafkaListener(id = "webGroup", topics = "topic_input")
public void listen(String input) {
logger.info("input value: {}" , input);
}
@KafkaListener(id = "webGroup1", topics = "hello")
public void onMessage(ConsumerRecord<Object, Object> record, Acknowledgment ack,
@Header(KafkaHeaders.RECEIVED_TOPIC) String topic) {
System.out.println("单条消费消息:" + record.topic() + "----" + record.partition() + "----" + record.value());
ack.acknowledge();
}
@KafkaListener(id = "webGroup2", topics = "hello")
public void onMessageButch(List<ConsumerRecord<?, ?>> records, Acknowledgment ack) {
for(ConsumerRecord<?, ?> record:records) {
System.out.println("批量消费消息:" + record.topic() + "----" + record.partition() + "----" + record.value());
}
ack.acknowledge();
}
}