springboot整合mqtt协议——rabbitmq服务器
前言:这里讲的比较简单的应用:还没有涉及到物联网的过程,总体来说就是模拟物联网,接收订阅消息,我们知道的rabbitmq可以做消息队列处理(后面也会用到,做并发),这是rabbitmq的另外一种物联网通讯的应用——mqtt协议,我们开发人员要显示数据主要就是开发一个服务器,我这里用的是rabbitmq,下次也会尝试搭建EMQ服务器来尝试mqtt整合。
mqtt协议
rabbitmq安装mqtt协议
在rabbitmq安装路径下sbin
shift+右击打开命令窗口
1、开启 mqtt 协议
rabbitmq-plugins enable rabbitmq_mqtt
rabbitmq-service stop
rabbitmq-service start
web 端实时消息推送
yml
iot:
mqtt:
clientId: ${random.value}
defaultTopic: topic
serverClientId: server-1
servers: tcp://127.0.0.1:1883
username: guest
password: guest
server:
port: 8082
spring:
main:
allow-bean-definition-overriding: true
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-integration</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-stream</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-mqtt</artifactId>
</dependency>
package com.shbykj.mqtt_test.mqtt.config;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.integration.annotation.ServiceActivator;
import org.springframework.integration.channel.DirectChannel;
import org.springframework.integration.mqtt.core.DefaultMqttPahoClientFactory;
import org.springframework.integration.mqtt.core.MqttPahoClientFactory;
import org.springframework.integration.mqtt.outbound.MqttPahoMessageHandler;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.MessageHandler;
@Configuration
public class IotMqttProducerConfig {
@Autowired
private MqttConfig mqttConfig;
/*
*
* MQTT连接器选项
* *
*/
@Bean(value = "getMqttConnectOptions")
public MqttConnectOptions getMqttConnectOptions1() {
MqttConnectOptions mqttConnectOptions = new MqttConnectOptions();
// 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,这里设置为true表示每次连接到服务器都以新的身份连接
mqttConnectOptions.setCleanSession(true);
// 设置超时时间 单位为秒