实现配置的可插拔

引言:
三天前我们小组内部发生了争吵,原因是设计MQ层时一方想用 Kafka 另一方想用 RocketMQ 。小组因为这事争论了一个多小时,甚至还列了一个表格来对比双方优劣。有人认为 Kafka 性能更加优异,更经得起考验;有人认为 RocketMQ 则经历了双11流量高峰,性能更值得信赖,而且还有更活跃的中文社群,没理由不选。当然我个人还是偏好 RocketMQ 的,但是也不能不尊重其他人的意见,于是最后的结果是想一个更灵活的办法,不管你是 Kafka 、RocketMQ 还是什么xxxxx,我就一句话:我全都要。

我们的目的是做到使用者可以通过修改配置来方便的切换不同的MQ,但是想了半天也没想出什么好方法,上网查阅资料、CSDN、掘金上也找不到满意的答案,于是我们又到 Spring 的官网去找文档。功夫不负有心人,在经过两天的寻找后,我们发现了一个注解:@ConditionAlOnProperties,这个注解可以使得满足一定条件时加载对应的配置,这不巧了吗,和我们需要的一拍即合,于是我们根据这个注解设计了对应的可插拔配置。(后来知道使用SPI会更加优雅,但是这是后来的事了,本文是基于注解的形式实现的,而且我认为使用注解会更加简单易懂,降低上手门槛)

实现:
在对应的MQ实现上加上注解,name属性读取配置文件中的信息,与后面的固定字段进行比对,当相同时才会加载次配置类,即使用对应的MQ服务

当我的配置oomun.mq.pipeline=rocketmq时,我就不去实例化Kafka相关的生产者和消费者,转而去初始化rocketmq的生产者和消费者,那自然接口下的实现类就是为rocketmq的
在这里插入图片描述
调用时会自动选择启用的配置MQ
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值