1、 加入kafka maven依赖
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
2、 kafka 参数配置及详细解释
spring.kafka.bootstrap-servers=xx.69.233.24x:9092
spring.kafka.producer.retries=3
spring.kafka.producer.batch-size=16384
spring.kafka.producer.buffer-memory=33554432
spring.kafka.producer.acks=1
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.consumer.group-id=default‐group
spring.kafka.consumer.enable-auto-commit=false
spring.kafka.consumer.auto-offset-reset=earliest
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.listener.ack-mode=manual_immediate
3、 生产者,发送消息
@Component
public class KafkamqSend {
private final static String TOPIC_NAME = "test-topic";
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
public void send(String message) {
kafkaTemplate.send(TOPIC_NAME, 0, "key", message);
}
}
4、消费端-接收消息
@Component
public class KafkaMqListener {
@KafkaListener(topics = "test-topic")
public void listenerOne(ConsumerRecord<String, String> record, Acknowledgment ack) {
String value = record.value();
System.out.println("test-topic 接收到的内容:" + value);
ack.acknowledge();
}
@KafkaListener(topics = "test-topic", groupId = "group1")
public void listenerTwo(ConsumerRecord<String, String> record, Acknowledgment ack) {
String value = record.value();
System.out.println("test-topic 接收到的内容:" + value);
ack.acknowledge();
}
@KafkaListener(topics = "test-topic", groupId = "group2")
public void listenerThree(ConsumerRecord<String, String> record, Acknowledgment ack) {
String value = record.value();
System.out.println("test-topic 接收到的内容:" + value);
ack.acknowledge();
}
@KafkaListener(
topicPartitions = {@TopicPartition(topic = "test-topic", partitions = "1",
partitionOffsets = @PartitionOffset(partition = "1", initialOffset = "100"))},
concurrency = "0")
public void listenerFour(ConsumerRecord<String, String> record, Acknowledgment ack) {
String value = record.value();
System.out.println("test-topic 接收到的内容:" + value);
ack.acknowledge();
}
}