From 1af266627294d8fbbdd50383b546449b81b1e84f Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Mon, 17 Nov 2025 17:35:11 +0800 Subject: [PATCH] fix mqtt connect --- apps/iot/src/endpoint/endpoint_mqtt.erl | 34 +++++++++++++------------ 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/apps/iot/src/endpoint/endpoint_mqtt.erl b/apps/iot/src/endpoint/endpoint_mqtt.erl index f60d52f..727b1ab 100644 --- a/apps/iot/src/endpoint/endpoint_mqtt.erl +++ b/apps/iot/src/endpoint/endpoint_mqtt.erl @@ -19,7 +19,7 @@ -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]). %% 消息重发间隔 --define(RETRY_INTERVAL, 5000). +-define(RETRY_INTERVAL, 15000). -define(DISCONNECTED, disconnected). -define(CONNECTED, connected). @@ -111,21 +111,23 @@ handle_info({timeout, _, create_postman}, State = #state{buffer = Buffer, status {retry_interval, 5000} ], - {ok, ConnPid} = emqtt:start_link(Opts), - lager:debug("[endpoint_mqtt] start connect, options: ~p", [Opts]), - case catch emqtt:connect(ConnPid, 5000) of - {ok, _} -> - lager:debug("[endpoint_mqtt] connect success, pid: ~p", [ConnPid]), - NBuffer = endpoint_buffer:trigger_n(Buffer), - {noreply, State#state{conn_pid = ConnPid, buffer = NBuffer, status = ?CONNECTED}}; - {error, Reason} -> - lager:warning("[endpoint_mqtt] connect get error: ~p", [Reason]), - erlang:start_timer(5000, self(), create_postman), - {noreply, State}; - Error -> - lager:warning("[endpoint_mqtt] connect get error: ~p", [Error]), - erlang:start_timer(5000, self(), create_postman), - {noreply, State} + try + {ok, ConnPid} = emqtt:start_link(Opts), + lager:debug("[endpoint_mqtt] start connect, options: ~p", [Opts]), + case emqtt:connect(ConnPid, 5000) of + {ok, _} -> + lager:debug("[endpoint_mqtt] connect success, pid: ~p", [ConnPid]), + NBuffer = endpoint_buffer:trigger_n(Buffer), + {noreply, State#state{conn_pid = ConnPid, buffer = NBuffer, status = ?CONNECTED}}; + {error, Reason} -> + lager:warning("[endpoint_mqtt] connect get error: ~p", [Reason]), + erlang:start_timer(?RETRY_INTERVAL, self(), create_postman), + {noreply, State} + end + catch _:Error-> + lager:warning("[endpoint_mqtt] connect get error: ~p", [Error]), + erlang:start_timer(?RETRY_INTERVAL, self(), create_postman), + {noreply, State} end; %% 离线时,忽略数据发送逻辑