package cn.edu.tju.controller;
import org.apache.kafka.clients.producer.RecordMetadata;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.kafka.support.SendResult;
import org.springframework.util.concurrent.ListenableFuture;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@Autowired
private KafkaTemplate<String,String> kafkaTemplate;
//发送即忘
@RequestMapping("/addMessage/{info}")
public String addMessage(@PathVariable("info")String info){
kafkaTemplate.send("test","myKey",info);
return info;
}
//同步获取发送结果
@RequestMapping("/addMessage2/{info}")
public String addMessage2(@PathVariable("info")String info){
ListenableFuture<SendResult<String, String>> future = kafkaTemplate.send("test", "myKey2", info);
String metaData="";
try{
SendResult<String,String> result =future.get();
RecordMetadata recordMetadata = result.getRecordMetadata();
int partition = recordMetadata.partition();
long offset = recordMetadata.offset();
metaData += " partition: ";
metaData += partition;
metaData += " offset: ";
metaData += offset;
}
catch (Exception ex){
System.out.println(ex.getMessage());
}
return metaData;
}
}