,大家好,我是Jensen。一个想和大家一起打怪升级的程序员朋友。,咱们在写Kafka消费者的时候,有没有发现一个很麻烦的事:消费消息前每次都要手动解析Kafka消息,转换成自己想要的类型,再进行业务操作,比如:,对代码有洁癖的同志就比较难受了,每次解析的操作都差不多,但这又不是业务代码……于是你就想:有没有一个办法让系统能够自动解析成自己想要的参数对象呢?,,不过也发现了一些难以解决的问题,比如:共用了一个groupId,使用Java线程池来管理,这样工程会存在性能瓶颈。,专业的事还是交给专业的“人”来做吧,用Kafka组件本身来管理不同分组消费会更靠谱。,Spring官方也发现这个问题,并且对此提出了解决方案——spring-messaging包下的HandlerMethodArgumentResolver接口。,,我们从官方文档中看到,Spring-kafka在2.4.2版本支持了对kafka消息进行方法参数级别转换。,其实,spring-web包下也有这个同名接口,用于自动解析Controller方法上的参数,这块网上资料比较多我就不详细展开了,而spring-messaging包下面这个接口的非官方资料比较少,我这里给大家总结一下用法。,HandlerMethodArgumentResolver方法参数处理器接口很简单,只有两个方法:,supportsParameter方法返回是否支持参数自动解析,resolveArgument方法就是具体的解析逻辑,把MQ传递参数转换为具体类型参数。,我们来看一下实际案例。,首先实现HandlerMethodArgumentResolver接口,定义为一个Spring的Component:,到这里,一个类就把参数自动解析搞定了,接下来咱们看看怎么用。,怎么样,代码是不是比原来简洁多了,香不香!,如果你对技术有追求,不想一直写业务代码,不妨把项目中所有需要手动解析参数的地方,替换成自定义方法参数解析器来实现~
文章版权声明
1 原创文章作者:cmcc,如若转载,请注明出处: https://www.52hwl.com/20142.html
2 温馨提示:软件侵权请联系469472785#qq.com(三天内删除相关链接)资源失效请留言反馈
3 下载提示:如遇蓝奏云无法访问,请修改lanzous(把s修改成x)
4 免责声明:本站为个人博客,所有软件信息均来自网络 修改版软件,加群广告提示为修改者自留,非本站信息,注意鉴别