Controller增加回调函数,用以支持在响应client之后,request/response析构之前执行一些自定义逻辑
这个PR的目的是解决我之前提出的一个issue #1315 我们有一些场景,比如对response、request的整体(或其中大量字段)做落盘(比如经过某种序列化,然后把结果发送给kafka等MQ), 希望能在response返回给客户端之后,再做这个操作。避免占用请求响应的时间。然而之前的Done->Run()调用之后,request、response所指向对象都会被析构,则无法实现这个需求。故而我这次给brpc的Controller新增一个回调函数,可以由使用方注册一个回调逻辑,在response返回之后,但request、response析构之后来执行。
该功能目前在常用的 baidu_std/http/http2 协议上支持。其他协议未开发。
@zyearn 希望看看,如果有函数设计或命名有不妥之处欢迎提出。 另外我修改了example里面的三个server代码,来展示我新增的这个函数的用法,不知道是否允许。或者我应该写在某个文档里面,而不是直接改example?
@jamesge
https://github.com/apache/incubator-brpc/issues/1300 这个可以提供类似的功能,供参考,不过需要注意一下control,request, response的析构顺序
#1300 这个可以提供类似的功能,供参考,不过需要注意一下control,request, response的析构顺序
不太一样吧。我这个偏业务,比如我是要根据业务场景的上下文状态,从request、response中一次性取出一些pb字段,组成一个json 或者新的pb,发给kafka。
@cdjingit
这个PR的目的是解决我之前提出的一个issue #1315 我们有一些场景,比如对response、request的整体(或其中大量字段)做落盘(比如经过某种序列化,然后把结果发送给kafka等MQ), 希望能在response返回给客户端之后,再做这个操作。避免占用请求响应的时间。然而之前的Done->Run()调用之后,request、response所指向对象都会被析构,则无法实现这个需求。故而我这次给brpc的Controller新增一个回调函数,可以由使用方注册一个回调逻辑,在response返回之后,但request、response析构之后来执行。
该功能目前在常用的 baidu_std/http/http2 协议上支持。其他协议未开发。
@zyearn 希望看看,如果有函数设计或命名有不妥之处欢迎提出。 另外我修改了example里面的三个server代码,来展示我新增的这个函数的用法,不知道是否允许。或者我应该写在某个文档里面,而不是直接改example?
我遇到一个类似的问题,想使用这个功能。 目前有进展吗,看代码一直没有合入
这个PR的目的是解决我之前提出的一个issue #1315 我们有一些场景,比如对response、request的整体(或其中大量字段)做落盘(比如经过某种序列化,然后把结果发送给kafka等MQ), 希望能在response返回给客户端之后,再做这个操作。避免占用请求响应的时间。然而之前的Done->Run()调用之后,request、response所指向对象都会被析构,则无法实现这个需求。故而我这次给brpc的Controller新增一个回调函数,可以由使用方注册一个回调逻辑,在response返回之后,但request、response析构之后来执行。
该功能目前在常用的 baidu_std/http/http2 协议上支持。其他协议未开发。
@zyearn 希望看看,如果有函数设计或命名有不妥之处欢迎提出。 另外我修改了example里面的三个server代码,来展示我新增的这个函数的用法,不知道是否允许。或者我应该写在某个文档里面,而不是直接改example?
我遇到一个类似的问题,想使用这个功能。 目前有进展吗,看代码一直没有合入
这个辛苦 @zyearn 有空看一下吧。有问题随时沟通
我们有个场景也需要这个功能,这个PR还会往下推动吗?
@guodongxiaren Sorry 之前漏掉这条了。Sync一下重新提一下?
@wwbmmm 之前baidu内部有类似的需求吗
@guodongxiaren Sorry 之前漏掉这条了。Sync一下重新提一下?
@wwbmmm 之前baidu内部有类似的需求吗
目前没有类似的需求
@guodongxiaren Sorry 之前漏掉这条了。Sync一下重新提一下?
@wwbmmm 之前baidu内部有类似的需求吗
sync了。之前在微信群里讨论过这个需求场景,当时是其他committer建议给brpc加拦截器功能,来实现这种需求。后来没改。