【问题标题】:Sftp Retry Logic Inside Azure function AppAzure 函数应用程序内部的 Sftp 重试逻辑
【发布时间】:2023-01-18 22:01:04
【问题描述】:

我面临一个问题,我在尝试连接 sfp 服务器时收到间歇性错误消息“远程主机强行关闭现有连接”。我正在尝试在 azure 函数应用程序中连接 sftp。我相信在存在连接问题时会发生此错误。为了处理这个问题,我需要实施重试逻辑以防万一发生此类错误,并以指定的延迟重复连接 sftp 服务器,直到达到配置的最大重试次数。我相信功能应用程序允许的最长执行时间是 5 分钟(需要从 azure 专家那里听到)。任何人都可以帮助我如何在 c# 中实现此重试功能。我正在使用 Renci.SshNet nuget 包来管理 sftp

  using (var _sftpCn = new SftpClient(host, port, userName, password))
            {
                _sftpCn.Connect();//error happens on this line:"An existing connection was forcibly closed by the remote host"
                log.LogInformation("Successful");
                byte[] byteArray = Encoding.UTF8.GetBytes(datacontent);
                sftpCl.WriteAllBytes("{remotePath}", byteArray);
                log.LogInformation("Sent successfully");
                _sftpCn.Disconnect();
            }

【问题讨论】:

标签: c# azure azure-functions sftp retry-logic


【解决方案1】:

我建议在这里使用Polly

Polly 是一个 .NET 弹性和瞬态故障处理库,它 允许开发人员表达重试、断路器、 流畅且线程安全的超时、隔板隔离和回退 方式。

它是免费的库,可以通过以下命令下载为nuget package

dotnet add package Polly

还有很多东西,请参阅herehere 了解更多详细信息和示例。

【讨论】:

  • 仅当它抛出“”现有连接被远程主机强行关闭”时才重试应用”..它可以通过这个实现吗?
猜你喜欢
  • 2018-12-13
  • 1970-01-01
  • 2017-10-17
  • 1970-01-01
  • 2018-02-08
  • 1970-01-01
  • 2019-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多