我有以下代码:
send_event_at({TsMsec,Msg}) ->
Now = os:system_time(micro_seconds),
NowMsec = erlang:convert_time_unit(Now,micro_seconds,milli_seconds),
DelayMsec = TsMsec - NowMsec,
if DelayMsec >= 0 ->
erlang:send_after(DelayMsec,self(),Msg);
true -> ignore
end.
然后在gen_fsm中我将这些消息处理为:
handle_info({new_status,{Status,HrQtKey}},StateName,State) ->
.....
{next_state,StateName,State};
用于发送延迟最多48小时的邮件的代码。 一切都很好。
但是如果我的gen_fsm有大量的传入消息,new_status消息最多会延迟15分钟。
这个错误不常出现,但实在令人讨厌。
想出可能是什么原因以及解决问题的最佳方法是什么?
答案 0 :(得分:2)
一些线索: