mqtt consumer add ping

This commit is contained in:
anlicheng 2024-01-17 17:03:37 +08:00
parent 7d26801d98
commit a9bcd368c0

View File

@ -137,6 +137,7 @@ handle_info({puback, Packet = #{packet_id := _PacketId}}, State = #state{}) ->
handle_info({timeout, _, create_consumer}, State = #state{mqtt_props = Props, conn_pid = undefined}) ->
try
{ok, ConnPid} = create_consumer(Props),
erlang:start_timer(10000, self(), ping_ticker),
{noreply, State#state{conn_pid = ConnPid}}
catch _:Error:Stack ->
lager:warning("[iot_zd_consumer] config: ~p, create consumer get error: ~p, stack: ~p", [Props, Error, Stack]),
@ -144,6 +145,14 @@ handle_info({timeout, _, create_consumer}, State = #state{mqtt_props = Props, co
{noreply, State#state{conn_pid = undefined}}
end;
%% ping服务器
handle_info({timeout, _, ping_ticker}, State = #state{conn_pid = undefined}) ->
{noreply, State};
handle_info({timeout, _, ping_ticker}, State = #state{conn_pid = ConnPid}) when is_pid(ConnPid) ->
erlang:start_timer(10000, self(), ping_ticker),
pong = emqtt:ping(ConnPid),
{noreply, State};
%% postman进程挂掉时
handle_info({'EXIT', ConnPid, Reason}, State = #state{conn_pid = ConnPid}) ->
lager:warning("[iot_zd_consumer] consumer exited with reason: ~p", [Reason]),