以下代码进行压力测试时出现了 socketException:connect reset 错误,该如何解决?

@Bean
public Mono<MqttClient> mqttClient() {
    return Mono.fromCallable(() -> {
        MqttClient mqttClient = new MqttClient(mqttPropertyConfig.getBroker(), MqttClient.generateClientId());
        MqttConnectOptions mqttConnectOptions = new MqttConnectOptions();
        mqttConnectOptions.setAutomaticReconnect(true);
        mqttConnectOptions.setUserName(mqttPropertyConfig.getUsername());
        mqttConnectOptions.setPassword(mqttPropertyConfig.getPassword().toCharArray());
        mqttConnectOptions.setMaxInflight(1000);
        mqttClient.connect(mqttConnectOptions);
        return mqttClient;
    }).subscribeOn(Schedulers.boundedElastic()).cache();
}
public Mono<Void> send(String payload) {
    return mqttConfiguration.mqttClient()
            .flatMap(client -> Mono.fromRunnable(() -> {
                try {
                    client.publish(mqttPropertyConfig.getTopic(), new MqttMessage(payload.getBytes()));
                } catch (MqttException e) {
                    throw new RuntimeException(e);
                }
            }));
}
@RequestMapping(value = "/na/iocm/devNotify/v1.1.0/updateDeviceData", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public Mono<Void> recvDeviceDataChangedNotify1(@RequestBody Object deviceDataChanged_NotifyMessage) {
    return mqttSendComponent.send(String.valueOf(deviceDataChanged_NotifyMessage));
}

这个错误通常是由于网络连接不稳定或者服务端异常导致的,可能需要进一步调查具体原因。以下是一些可能的解决方法:

  1. 检查网络连接是否稳定,尝试重启网络设备或者更换网络环境;
  2. 如果服务端出现异常,需要修复服务端的问题;
  3. 调整连接超时时间,增加连接的稳定性;
  4. 调整并发连接数限制,减少连接的压力;
  5. 使用更稳定的连接方式,比如使用长连接或者保持连接池等方式。
Spring Boot 中 MQTT 客户端连接重置异常(connect reset)的解决方法

原文地址: https://www.cveoy.top/t/topic/ol2t 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录