mqtt客户端和ssh框架整合以及从mqtt服务器获取的数据如何保存到数据库实例

一.mqtt客户端和ssh框架整合

1.在maven的pom.xml文件中加入依赖jar包 

<!--paho.mqtt-->
        <dependency>
			<groupId>org.springframework.integration</groupId>
			<artifactId>spring-integration-mqtt</artifactId>
			<version>4.1.0.RELEASE</version>
			<exclusions>
				<exclusion>
					<groupId>org.eclipse.paho</groupId>
					<artifactId>mqtt-client</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		
		<dependency>
			<groupId>org.fusesource.mqtt-client</groupId>
			<artifactId>mqtt-client</artifactId>
			<version>1.14</version>
		</dependency>
		<dependency>
			<groupId>org.eclipse.paho</groupId>
			<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
			<version>1.2.0</version>
		</dependency>

2.写mqtt客户端的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:int="http://www.springframework.org/schema/integration"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:int-mqtt="http://www.springframework.org/schema/integration/mqtt"
    xsi:schemaLocation="
        http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration-4.1.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
        http://www.springframework.org/schema/integration/mqtt http://www.springframework.org/schema/integration/mqtt/spring-integration-mqtt-4.1.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.1.xsd">
 
	<!-- mqtt客户端 -->
	<bean id="clientFactory"
		class="org.springframework.integration.mqtt.core.DefaultMqttPahoClientFactory">
		<property name="userName" value="FirstUserName" />
		<property name="password" value="123456" />
	</bean>
 
	<!-- 消息适配器  -->
	<int-mqtt:message-driven-channel-adapter
		id="mqttInbound" client-id="CID_2016524123456" url="tcp://127.0.0.1:1883"
		topics="mqtt/2"
		qos="1"
		client-factory="clientFactory" 
		auto-startup="true"
		send-timeout="12"
		channel="startCase"/>
		<int:channel id="startCase" />
 
<!-- 消息处理类 -->
<int:service-activator id="startCaseService"
    input-channel="startCase" ref="mqttCaseService" method="startCase" />
 
<bean id="mqttCaseService" class="mqtt.demo.action.basisMessAction" /> 
 
</beans>

 3.在spring框架的配置文件(applicationContext.xml)中引入mqtt.xml配置文件,有可能要加入<beans../beans>

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://www.springframework.org/schema/beans" 
xmlns:aop="http://www.springframework.org/schema/aop" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:tx="http://www.springframework.org/schema/tx" 
xmlns:p="http://www.springframework.org/schema/p"
xmlns:int-mqtt="http://www.springframework.org/schema/integration/mqtt"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
					http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 
					http://www.springframework.org/schema/aop 
					http://www.springframework.org/schema/aop/spring-aop-4.2.xsd 
					http://www.springframework.org/schema/context 
					http://www.springframework.org/schema/context/spring-context-4.2.xsd 
					 http://www.springframework.org/schema/integration/mqtt http://www.springframework.org/schema/integration/mqtt/spring-integration-mqtt-4.1.xsd
					 http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration-4.1.xsd
					http://www.springframework.org/schema/util
				   http://www.springframework.org/schema/util/spring-util-3.0.xsd
					http://www.springframework.org/schema/mvc  
     					http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
     					http://www.springframework.org/schema/task 
        	             http://www.springframework.org/schema/task/spring-task-3.0.xsd
					http://www.springframework.org/schema/tx 
					http://www.springframework.org/schema/tx/spring-tx-4.2.xsd ">
			<import resource="mqtt.xml"/>		

 二.mqtt服务器获取的数据如何保存到数据库

注意:因为ssh三层与mqtt实现类没有关系,mqtt实现类要用三层关系来保存数据,需要getBean()方法获得Spring管理的Bean的对象(也就是获取Spring的上下文环境ApplicationContext详情链接:

1.https://blog.csdn.net/fubo1990/article/details/79648766

2.https://blog.csdn.net/yang123111/article/details/32099329

3.getBean详解https://blog.csdn.net/qq_23927391/article/details/80625578)(为啥这么做的原因不清楚,请教大佬)

代码:

static String paths[] = {"applicationContext.xml"};
    static ApplicationContext ctx = new ClassPathXmlApplicationContext(paths);  
    static basisMessService basisMessService1 = ctx.getBean(basisMessService.class);

!.在Action类中实现mqtt.xml中的消息处理类

直接按照常规basisMessService不能调用service层,要用Spring管理的Bean的对象basisMessService1才可以调用Service层。

2.在service层进行处理逻辑然后调用Dao层保存数据,调用Dao层如上要用Spring管理的Bean的对象调用

private basisMessDao basisMessDao;
     static String paths[] = {"applicationContext.xml"};
     static ApplicationContext ctx = new ClassPathXmlApplicationContext(paths);
     static deviceMessDao deviceMessDao1 = ctx.getBean(deviceMessDao.class);
     static basisMessDao basisMessDao1 = ctx.getBean(basisMessDao.class);
     static forstDao forstDao1 = ctx.getBean(forstDao.class);
	@Override
	public void saveData(String[] splited) {
		basisMess basis1=new basisMess();
		deviceMess device1=new deviceMess();
		forst forst=new forst();
		basis1.setLongitude(splited[0]);
	    basis1.setLatitude(splited[1]);
	    basisMess basismess=basisMessDao1.savebasisMess(basis1);
	    basis1.setBid(basismess.getBid());
	    Date date = new Date();
	    Timestamp timeStamep = new Timestamp(date.getTime());
	    WeatherUtil weath = new WeatherUtil();
        String weather = weath.getWeather("XX");
        String len[] = weather.split("#");
        System.out.println("XXXX"+len[6]);
        device1.setWeather(len[6]);
	    device1.setTemperature(splited[2]);
	    device1.setTrend(splited[3]);
	    device1.setTime(timeStamep);
	    device1.setBasisMess(basis1);
	    System.out.println("XXXXXXXXXXXXXXXX");
		deviceMessDao1.savedeviceMess(device1);
		if(splited[2].contains("-")==true)
	    {
	    	forst.setGrade("XXXXXX");
	    }
	    else 
	    	forst.setGrade("XXXXXX");
		forst.setTime(timeStamep);
		forst.setBasisMess(basis1);
	    forstDao1.saveforst(forst);
	}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值