为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

2 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

异步写入可以设置回调函数获取写入数据的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());
}
});
                            
查看完整回答
反对 回复 2019-08-09
?
动漫人物

TA贡献1815条经验 获得超10个赞

异步发送肯定不能同步返回,否则整体视为同步代码,失去异步的意义,异步一般会通过回调的方式来执行相应的逻辑,Kafka异步发送会异步成功或失败回调,在回调中处理业务逻辑,而调用方(客户端)也必须支持异步处理。
                            
查看完整回答
反对 回复 2019-08-09
  • 2 回答
  • 0 关注
  • 778 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信