TsgcWebSocketClient › 事件 › OnSendBufferFull
当出站消息队列达到 QueueOptions.MaxQueueSize 时、在应用溢出策略之前触发。
property OnSendBufferFull: TsgcWSSendBufferFullEvent;
// TsgcWSSendBufferFullEvent = procedure(Connection: TsgcWSConnection; const QueueSize: Integer; var DropMessage: Boolean) of object
—
仅当消息排队处于活动状态且 QueueOptions.MaxQueueSize 大于零时才会触发:每当有消息即将加入队列、而队列已包含 MaxQueueSize 条消息时,就会触发此事件,并传入当前的 QueueSize。DropMessage 传入时为 True;保持不变则由 QueueOptions.OverflowPolicy 决定后续行为(qopDropOldest 丢弃队列中最旧的消息,qopDropNewest 丢弃新消息,qopDisconnect 丢弃新消息并关闭连接);将其设置为 False 则仍然接受该消息,允许队列超出限制继续增长。使用此事件可检测背压,例如暂停生产者或记录慢速消费者的情况。
procedure OnSendBufferFull(Connection: TsgcWSConnection; const QueueSize: Integer;
var DropMessage: Boolean);
begin
WriteLn('#send buffer full: ' + IntToStr(QueueSize) + ' messages queued');
end;