springboot kafka 顺序消息
实现方式:将需要顺序消费的消息发送到同一个分区
*********************************************
使用示例
********************************
application.yml
spring:
kafka:
bootstrap-servers: 172.18.0.12:9092
listener:
missing-topics-fatal: false
type: batch
********************************
producer 端
@Service
public class ProducerService {
@Resource
private KafkaTemplate<Object,String> kafkaTemplate;
public void send() throws Exception {
for (int i=0;i<100;i++){
SendResult<Object,String> result=kafkaTemplate.send("order",0,null,"瓜田李下 顺序消息"+i).get();
System.out.println("发送时间:"+System.currentTimeMillis()+" "+result);
}
}
}
*************************************
consumer 端
@Component
public class ConsumerService {
@KafkaListener(groupId = "consumerGroup",topics = "order")
public void consumer(ConsumerRecords<Object,String> consumerRecords){
for(TopicPartition topicPartition:consumerRecords.partitions()){
for(ConsumerRecord<Object,String> consumerRecord:consumerRecords.records(topicPartition)){
System.out.println("消费时间:"+System.currentTimeMillis()+" "+consumerRecord.value());
}
}
}
}
******************************************
控制台输出

|