如何封装一个通用的kafka消息中间件模块?

发布时间 2023-12-28 16:45:19作者: ForMei

  在微服务中, 服务和服务之间往往通过消息中间件来进行业务交流。如果每个服务都需要自己再去编写一套消费业务消息或者发送业务消息的代码,每个模块都会出现许多重复的代码,所以可以把和kafka相关的代码,集成到一个基础模块之中,去形成整洁的代码架构。

      下面的图片是一个模块划分示例。

     为什么进行精细化的模块划分?划分模块让每部分的代码职责单一。将consumer和producer的代码集成到各自的模块?当我们构建依赖关系的时候,只需要依赖想要的模块就好了。

   kafka-config-data模块:负责读取服务的配置文件,注意,这里并没有写死代码,只是配置文件中关于相关的配置有统一的yaml文件开头,当该模块被其他服务模块依赖到的时候,会自己去读取对应的配置文件。

   kafka-model: 此模块的作用就是序列化相关的操作

       kafka-producer: 此模块的作用就是一套通用的消息发送模块,定义相关的接口,统一的入参 ,异步的方式确认消息是否发送成功,打印对应日志信息。

       kafka-consumer:这个模块就不一样了,因为消费的逻辑是不相同的,所以在这个模块之中,你只需要定义一个接口就好了,具体怎么实现,需要到具体的服务里去实现逻辑。

 

       

     上述代码的github仓库:https://github.com/AndrwYan/restaurant-app