简单写了一个基于spring boot mosquitto 的starter
By:Roy.LiuLast updated:2020-07-20
基于spring boot和mosquitto实现了一个mosquitto的starter, 在以后的项目中需要用到mosquitto的地方,可以简单修改,然后集成到项目中去.
不记录详细过程了,原代码下载可以看,只记录几个重点,一个自定义的springboot starter,一般来说要满足以下两个条件:
一个自动装配的类及相关依赖, 注意装配类上的注解
装配类需要的配置文件,一般来说说是 properties 文件
装配类对应的maven pom.xml文件
META-INF 目录下 spring.factories 文件的定义, 特别要注意里面的内容,一定要与自己编写的starter 一 一对应,注意粗体字内容,全是自定义的类
org.springframework.boot.autoconfigure.EnableMosquittoConfigure=\
com.yihaomen.mosquitto_starter.MosquittoAutoConfigure
mosquitto 的消息处理逻辑相对来说就比较简单了,按照相关API 处理就行,重点是写了一个MessageHandler 接口,处理消息。
调用方怎么处理呢,可以这么做,首先maven引入starter
<dependency> <groupId>com.yihaomen</groupId> <artifactId>mosquitto-starter</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
然后再自己的工程APP上添加 @EnableMosquittoConfigure,类似如下:
@EnableScheduling @EnableMosquittoConfigure @SpringBootApplication public class App { public static void main(String[] args) { SpringApplication app = new SpringApplication(App.class); app.run(args); } }
在应用启动的时候,加载mosquitto相应方法,比如在例子中启动的订阅:
@Component public class MosquittoServiceLoader { private static Logger logger = LoggerFactory.getLogger(MosquittoServiceLoader.class); @Autowired private MosquittoMsgReceiver mosquittoMsgReceiver; @PostConstruct public void startMosquittoReceiveListener() { logger.info("==>load mosquittoRecieve listener"); mosquittoMsgReceiver.run(new MessageHandler() { @Override public void handleMessage(String msg, String topic) { logger.info("==>get topic: " + topic); logger.info("==>get msg: " + msg); } }); } }
源代码下载:
spring boot,mosquitto 集成starter 源码下载
From:一号门
COMMENTS