请各位大佬指点!调用Springmvc接口发送kafka,如何设计接口返回值

项目提供controller接口,此接口用于发送一条消息到kafka队列中。
目前采用同步发送的方式,当发送成功后,接口返回成功响应。
问题:如果采用异步方式,接口如何返回?如果在调用异步发送后,接口就直接返回,那么客户端如何知道此条消息发送的成功与否?
调用controller接口发送kafka消息,如何编码,才能保证消息发送成功与失败都能得到处理,并作为返回值返回给客户端?
繁花不似锦
浏览 779回答 2
2回答

慕哥9229398

异步写入可以设置回调函数获取写入数据的metadata信息,是否写入异常等等,然后在进行相关操作。kakfaproducejavaapi调用以下send方法,在服务端响应该produce请求后就会回调onCompletion方法。ProducerRecordrecord=newProducerRecord("the-topic",key,value);producer.send(myRecord,newCallback(){publicvoidonCompletion(RecordMetadatametadata,Exceptione){if(e!=null)e.printStackTrace();System.out.println("Theoffsetoftherecordwejustsentis:"+metadata.offset());}});

动漫人物

异步发送肯定不能同步返回,否则整体视为同步代码,失去异步的意义,异步一般会通过回调的方式来执行相应的逻辑,Kafka异步发送会异步成功或失败回调,在回调中处理业务逻辑,而调用方(客户端)也必须支持异步处理。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript