TsgcWebSocketClient › 이벤트 › OnSendBufferFull
송신 메시지 큐가 QueueOptions.MaxQueueSize에 도달했을 때 오버플로 정책이 적용되기 전에 발생합니다.
property OnSendBufferFull: TsgcWSSendBufferFullEvent;
// TsgcWSSendBufferFullEvent = procedure(Connection: TsgcWSConnection; const QueueSize: Integer; var DropMessage: Boolean) of object
—
메시지 큐잉이 활성화되어 있고 QueueOptions.MaxQueueSize가 0보다 클 때만 발생합니다. 큐에 이미 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;