refactor: gate mqtt inbound startup
This commit is contained in:
@@ -10,8 +10,10 @@ import com.lingniu.ingest.inbound.mqtt.parser.MqttPayloadParser;
|
||||
import com.lingniu.ingest.inbound.mqtt.profile.MqttProfile;
|
||||
import com.lingniu.ingest.inbound.mqtt.profile.MqttProfileRegistry;
|
||||
import com.lingniu.ingest.inbound.mqtt.profile.YutongMqttProfile;
|
||||
import org.springframework.boot.ApplicationRunner;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Conditional;
|
||||
@@ -62,7 +64,7 @@ public class MqttInboundAutoConfiguration {
|
||||
return new MqttRealtimeHandler(profileRegistry);
|
||||
}
|
||||
|
||||
@Bean(initMethod = "start", destroyMethod = "close")
|
||||
@Bean(destroyMethod = "close")
|
||||
@Lazy(false)
|
||||
@ConditionalOnMissingBean
|
||||
public MqttEndpointManager mqttEndpointManager(MqttInboundProperties props,
|
||||
@@ -74,6 +76,15 @@ public class MqttInboundAutoConfiguration {
|
||||
return new MqttEndpointManager(props, profileRegistry, identityResolver, dispatcher);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnProperty(prefix = "lingniu.ingest.mqtt",
|
||||
name = "auto-startup",
|
||||
havingValue = "true",
|
||||
matchIfMissing = true)
|
||||
public ApplicationRunner mqttEndpointStartupRunner(MqttEndpointManager manager) {
|
||||
return args -> manager.start();
|
||||
}
|
||||
|
||||
private static void applyLegacySingleEndpointFallback(MqttInboundProperties props, Environment env) {
|
||||
if (!props.getEndpoints().isEmpty()) {
|
||||
return;
|
||||
|
||||
@@ -16,11 +16,15 @@ public class MqttInboundProperties {
|
||||
|
||||
/** 总开关。关闭时不会创建任何 MQTT 客户端连接。 */
|
||||
private boolean enabled = false;
|
||||
/** 是否随 Spring Boot 应用启动立即连接 broker。测试装配时可关闭,生产默认开启。 */
|
||||
private boolean autoStartup = true;
|
||||
/** 多 broker/多 topic 配置;每个 endpoint 独立重连、订阅并转成内部 VehicleEvent。 */
|
||||
private List<Endpoint> endpoints = new ArrayList<>();
|
||||
|
||||
public boolean isEnabled() { return enabled; }
|
||||
public void setEnabled(boolean enabled) { this.enabled = enabled; }
|
||||
public boolean isAutoStartup() { return autoStartup; }
|
||||
public void setAutoStartup(boolean autoStartup) { this.autoStartup = autoStartup; }
|
||||
public List<Endpoint> getEndpoints() { return endpoints; }
|
||||
public void setEndpoints(List<Endpoint> endpoints) { this.endpoints = endpoints; }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user