TsgcWSCircuitBreaker › 方法 › RecordMessageError
服务器端钩子,在 ServerKey 上记录消息失败。
procedure RecordMessageError(const aIP: string; const aException: string = '');
| 名称 | 类型 | 描述 |
|---|---|---|
aIP | const string | 传递失败消息的连接的对端 IP 地址。用于日志记录和未来的每 IP 指标。 |
aException | const string | 可选的异常文本(ClassName: Message),传递给 Classification,以便忽略服务器端业务错误。 |
用于服务器端自我保护的 WebSocket 消息版故障记录器。委托给 RecordFailure(ServerKey, aException),IP 参数目前仅作为信息性参数。当处理失败时从服务器的 OnMessage 处理程序调用,以便断路器在服务器过载时(例如一批格式错误的消息或已崩溃的依赖下游)能够自我跳闸至 Open 状态。OnFailureRecorded 以 ServerKey 为键触发。当 Enabled 为 False 时立即返回。
procedure TForm1.WSServerMessage(Connection: TsgcWSConnection;
const Text: string);
begin
try
HandleMessage(Text);
sgcWSCircuitBreaker1.RecordMessageSuccess(Connection.PeerIP);
except
on E: Exception do
begin
sgcWSCircuitBreaker1.RecordMessageError(Connection.PeerIP,
Format('%s: %s', [E.ClassName, E.Message]));
raise;
end;
end;
end;