TIdTCPClient 连接池

时间:2021-05-05 10:43:16

标签: delphi tcp connection-pooling indy

我想使用 TIdTCPClient 从使用 Delphi 和 TWebModule 制作的 Web 服务器应用程序连接到 Redis。

目前在创建 WebModule 时,我创建了一个新的 TIdTCPClient 并连接到 Redis,例如:

procedure TWebService.WebModuleCreate(Sender: TObject);-
begin
    FClient := TIdTCPClient.Create();
    FClient.Connect('REDIS_HOST', 6379);
end;

在 web 模块销毁时,我断开连接并释放资源,例如:

procedure TWebService.WebModuleDestroy(Sender: TObject);
begin
   FClient.Disconnect;
   FClient.Free;
end;

一切正常...但这样我会在每个新请求上创建一个新连接,并且在很长一段时间后,TIME_WAIT 套接字的数量越来越多。

我想实现一个全局连接池,其中始终打开固定数量的连接(例如:50 个)并仅使用这些连接。

Indy 有什么东西可以管理 TCP 连接池吗?

1 个答案:

答案 0 :(得分:2)

不,Indy 不提供任何用于汇集 TCP 连接的东西。您必须在自己的代码中实现自己的 TIdTCPClient 对象池。