1.集成依赖
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-core</artifactId>
<version>4.3.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-mqtt</artifactId>
<version>4.3.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.2.0</version>
</dependency>
2.applicationContext.xml
<bean id="clientFactory"
class="org.springframework.integration.mqtt.core.DefaultMqttPahoClientFactory">
<property name="userName" value="${mqtt.username}"/>
<property name="password" value="${mqtt.password}"/>
<property name="cleanSession" value="${mqtt.cleanSession}"/>
<property name="keepAliveInterval" value="${mqtt.keepAliveInterval}"/>
<property name="serverURIs">
<array>
<value>${mqtt.serverURI1}</value>
</array>
</property>
</bean>
<bean id="mqttHandler" class="org.springframework.integration.mqtt.outbound.MqttPahoMessageHandler">
<constructor-arg name="clientId" value="${mqtt.clientId}"/>
<constructor-arg name="clientFactory" ref="clientFactory"/>
<property name="async" value="${mqtt.async}"/>
<property name="defaultQos" value="${mqtt.defaultQos}"/>
<property name="completionTimeout" value="${mqtt.completionTimeout}"/>
</bean>
3.mqtt.properties
#用户名
mqtt.username=admin
#密码
mqtt.password=admin
#是否清除会话
mqtt.cleanSession=false
#服务端url
mqtt.serverURI1=tcp://localhost:1883
#是否异步发送
mqtt.async=true
#超时时间
mqtt.completionTimeout=20000
#心跳
mqtt.keepAliveInterval=30
#客户端id
mqtt.clientId=mqttPubClient
#默认的消息服务质量
mqtt.defaultQos=0
3. 调用
import cn.jr.cose.api.entity.MqttMessage;
import cn.jr.cose.api.service.MqttPahoService;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.json.JSONString;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.integration.mqtt.outbound.MqttPahoMessageHandler;
import org.springframework.integration.mqtt.support.MqttHeaders;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.messaging.Message;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* @Author: zhoufangyuan
* @Date: 2020/6/12 9:07
*/
@Service("mqttPahoService")
public class MqttPahoServiceImpl implements MqttPahoService {
Logger logger = LoggerFactory.getLogger(MessageServiceImpl.class);
@Resource
private MqttPahoMessageHandler mqttHandler;
@Override
public void sendMqtt(String topic, MqttMessage content) {
String jsonString="";
try{
jsonString=JSON.toJSONString(content);
// 构建消息
Message<String> messages = MessageBuilder.withPayload(jsonString).setHeader(MqttHeaders.TOPIC, topic).build();
// 发送消息
mqttHandler.handleMessage(messages);
}catch (Exception e){
logger.error("MQTT发送消息失败--"+e.getMessage()+jsonString);
}
}
}