package com.fastbee.bootstrap.mqtt; import com.fastbee.mqtt.server.MqttServer; import com.fastbee.mqtt.server.WebSocketServer; import com.fastbee.server.Server; import com.fastbee.server.config.NettyConfig; import com.fastbee.common.enums.ServerType; import lombok.Data; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.Order; /** * MQTT-BROKER启动 * @author gsb * @date 2022/9/17 17:25 */ @Order(10) @Configuration @ConfigurationProperties(value = "server.broker") @Data public class MQTTBootStrap { @Autowired private MqttServer mqttServer; @Autowired private WebSocketServer webSocketServer; /*服务器集群节点*/ private String brokerNode; /*端口*/ private int port; /*心跳时间*/ private int keepAlive; /*webSocket端口*/ private int websocketPort; /*webSocket路由*/ private String websocketPath; /** * 启动mqttBroker * @return server */ @ConditionalOnProperty(value = "server.broker.enabled", havingValue = "true") @Bean(initMethod = "start", destroyMethod = "stop") public Server mqttBroker() { return NettyConfig.custom() .setIdleStateTime(0,0,keepAlive) .setName(ServerType.MQTT.getDes()) .setType(ServerType.MQTT) .setPort(port) .setServer(mqttServer) .build(); } @ConditionalOnProperty(value = "server.broker.enabled", havingValue = "true") @Bean(initMethod = "start",destroyMethod = "stop") public Server webSocket(){ return NettyConfig.custom() .setIdleStateTime(0,0,keepAlive) .setName(ServerType.WEBSOCKET.getDes()) .setType(ServerType.WEBSOCKET) .setPort(websocketPort) .setServer(webSocketServer) .build(); } }