@SpringBootApplicationpublicclassKafkaSpringBootApplication{publicstaticvoidmain(String[] args)throws IOException {
SpringApplication.run(KafkaSpringBootApplication.class,args);
System.in.read();}@KafkaListeners(
value ={//监听topic@KafkaListener(topics ={"topic01"})})publicvoidreceive01(ConsumerRecord consumerRecord){
System.out.println("topic01 record:"+consumerRecord);}@KafkaListeners(
value ={@KafkaListener(topics ={"topic02"})})@SendTo("topic03")//将监听到的信息转发到topic3public String receive02(ConsumerRecord consumerRecord){return consumerRecord.value()+"\t"+"fufu zhen shuai ";}@KafkaListeners(
value ={@KafkaListener(topics ={"topic03"})})publicvoidreceive03(ConsumerRecord consumerRecord){
System.out.println("topic03 record:"+consumerRecord);}}
4.springboot完成对事务的控制
@SpringBootTest(classes = KafkaSpringBootApplication.class)@RunWith(SpringRunner.class)publicclassKafkaSpringbootTest{@Autowiredprivate KafkaTemplate kafkaTemplate;/**
* 非事务下执行 这里会报错 说没开启事务
*/@TestpublicvoidtestSend1(){
kafkaTemplate.send(newProducerRecord("topic01","key007","this is kafkatemplate send message"));}/**
* 事务下执行
*/@TestpublicvoidtestSend2(){
kafkaTemplate.executeInTransaction(newKafkaOperations.OperationsCallback(){@Overridepublic Object doInOperations(KafkaOperations kafkaOperations){
kafkaOperations.send(newProducerRecord("topic01","key007-tran","this is kafkatemplate send message by tranceation"));return null;}});}}
5.利用spring事务完成kafka的事务控制
@SpringBootTest(classes = KafkaSpringBootApplication.class)@RunWith(SpringRunner.class)publicclassMessageSenderTest{@Autowiredprivate IMessageSender messageSender;@TestpublicvoidsendMessage(){
messageSender.sendMessage("topic01","002-service","message send by service template");}@TestpublicvoidprintInfo(){
messageSender.printInfo("print info by which one service");}}publicinterfaceIMessageSender{publicvoidsendMessage(String topic,String key,String message);voidprintInfo(String info);}@Service@TransactionalpublicclassMessageSenderimplementsIMessageSender{@Autowiredprivate KafkaTemplate kafkaTemplate;@OverridepublicvoidsendMessage(String topic, String key, String message){
kafkaTemplate.send(newProducerRecord(topic,key,message));}@OverridepublicvoidprintInfo(String info){
System.out.println("11111111111111111111"+info);}}