检查 gRpc 服务器是否在 C# 中运行

2024-02-25

我正在用 C# 编写一个 gRpc 服务器,如果服务器因任何原因关闭,我想添加自动恢复/重试实现。经过研究,我遇到了拦截器并感到兴奋,但看起来它只支持 Go。我找不到 gRpc C# 的任何类似内容。

如何在 gRpc CSharp 中处理自动恢复,或者是否有任何类似的概念(例如我们可以使用拦截器)?

EDIT- 在 GRPC c# 中,有没有办法检查服务器是否正在运行或可用?


我不确定这是否是 API 的良好实践和正确用法,但我会使用客户端的 Channel 实例来实现这一点。因此,在客户端类中,我将公开 IsReady 方法,用于尝试连接并随后检查通道的状态。这是一个代码示例:

public bool IsReady()
{
  channel.ConnectAsync();
  return channel.State == ChannelState.Ready;
}

您还可以实现此方法的异步版本,并传递连接截止日期:

public async Task<bool> IsReadyAsync(DateTime? deadline)
{
  try
  {
    await channel.ConnectAsync(deadline: deadline);
  }
  catch (TaskCanceledException)
  {
    return false;
  }

  return channel.State == ChannelState.Ready;
}

ConnectAsync 方法请求通道连接服务而不启动 RPC。一旦通道状态为就绪,返回的任务就完成。如果到达截止时间,或者通道进入 Shutdown 状态,则任务将被取消。因此,您可以尝试使用它来实现您的目标,或者使用提供的示例(如果它们适合您)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查 gRpc 服务器是否在 C# 中运行 的相关文章

随机推荐

  • 通过 GenericEntity> 在 RESTful Response 对象中使用 Java 泛型模板类型

    我有一个通用的 JAX RS 资源类 并且我已经定义了一个通用的findAll method public abstract class GenericDataResource
  • 为什么Complete输出模式需要聚合?

    我在 Apache Spark 2 2 中使用最新的结构化流处理并遇到以下异常 org apache spark sql AnalysisException 完整输出模式不 当流上没有流聚合时支持 数据框 数据集 为什么完整输出模式需要流式
  • 禁止访问消息以防止从 Excel 重复导入

    我正在将数据从 Excel 导入到 Access 中的现有表中 并希望抑制以下消息 我尝试使用多字段索引将新记录导入表中 并且还尝试首先导入临时表 然后将新记录附加到现有表中 然而 在这两种情况下 它仍然会弹出以下消息 我想避免用户看到该消
  • 使用 Linq 查询 Xml 文件中的记录

    以下是我的 xml 文件 我必须为每个页面和每个类型获取以逗号分隔的字符串提到的字段 请帮助了解如何继续使用 Linq 示例 如果我想为 page1 定义 Type customFields 则必须以逗号分隔输出 项目ID 员工ID 员工姓
  • 同一个Python解释器实例同时运行多个脚本?

    6 7 年前 我看到了一种在资源紧张的 env 上运行 python 的倡议 只需运行解释器一次 同时允许多个脚本同时使用它 这个想法是节省解释器启动开销并节省 RAM 是否存在类似的东西 这个问题Python 从同一个解释器同时执行多个脚
  • Scanf 漏行

    我编写了一个测试程序 它应该接受 3x3 字符矩阵并输出输入的矩阵 但是 我必须输入 4 行才能让程序生成相应的矩阵 我已经查找了 scanf 函数的问题 但我尝试过的解决方案似乎都不起作用 你能帮我解决这个问题吗 My code incl
  • Paramiko Python:IOError:[Errno 13]权限被拒绝

    问题 我可以做类似的事情吗 self sftp put sourceFilePath final destination use sudo True 我可以创建文件夹 但不能创建文件 我需要显式调用 sudo 或在 paramiko 中设置
  • 从 CSV 文件创建 Networkx 图表

    我正在尝试构建一个 NetworkX 社交网络图CSV file https github com MelissaLaurino DolphinSocialNetwork Laurino blob master test csv 我正在使用
  • java 字符串分割

    如果我想分割任意字符串的字符 考虑有间隙和无间隙 该怎么办 例如 如果我有字符串My Names James我希望每个角色都像这样 M y n a m e s etc 你是这个意思 String sentence Hello World S
  • 该方法必须重写超类方法

    最近我将计算机更新到 Ubuntu 11 10 64 位 我在导入项目时遇到问题 它给了我一个错误 方法 onView 必须重写超类方法 我在其他一些帖子中读到错误应该是使用java 1 5 但是Ubuntu 11 10附带了open 6
  • Laravel 核心方法混乱

    我一直在挖掘 Laravel 的核心 因为我想了解它是如何工作的 但我想出了一个方法 即使三天后我也无法理解 在 start php 中 应用程序与其自身绑定 到目前为止 一切都很好 但是当我检查 app gt share 方法时我迷失了
  • 将函数应用于数据框中的每一列,观察每列现有的数据类型

    我正在尝试获取大数据框中每列的最小值 最大值 作为了解我的数据 我的第一次尝试是 apply t 2 max na rm 1 它将所有内容视为字符向量 因为前几列是字符类型 所以一些数字列的最大值是 99 5 然后我尝试了这个 sapply
  • SQL 聚合函数别名

    我是 SQL 初学者 这是我被要求解决的问题 假设大城市被定义为place类型的city人口为 至少100 000 编写返回方案的 SQL 查询 state name no big city big city population 订购st
  • 无法使用 SES 接收 S3 存储桶中的电子邮件

    我正在尝试创建一个系统 其中电子邮件将发送到我公司的邮箱 并且 S3 存储桶将存储这些电子邮件 每当存储新电子邮件时 都会触发 Lambda 函数来存储电子邮件并回复发件人 第二部分 然而 我没有成功地实现第一部分 我有一个托管在 AWS
  • 在 Web API 控制器中接收 Json 反序列化对象作为字符串

    以下是我从 Ui 输入的 Json data Id 1 Id 2 Id 3 我可以在如下所示的对象结构中没有问题地接收它 public class TestController ApiController
  • 动态生成角度为2的输入字段类型并设置字段的类型

    我是 Angular 2 的新手 尝试根据使用 Angular 2 的模型动态生成一堆输入字段 有些字段是密码字段 如果是的话 我想让输入字段输入密码 我写过这样的东西 div div
  • 引用主题的原色而不是 Material UI 中的特定颜色

    使用 ReactJS 和 Material UI 我有一个项目 其中我更改了主题颜色 const newTheme getMuiTheme fontFamily Roboto sans serif palette primary1Color
  • Angular 2 和 Spring Boot - 部署到战争

    首先我要说的是 我是 Maven Spring 的新手 并且很难弄清楚当我的目录不遵循首选 Maven 结构时该怎么做 我按照说明通过 Angular 2 和 Spring Boot 设置项目tutorial https blog jdri
  • 具有多个 IN 参数的存储过程

    我得到了以下程序 create or replace PROCEDURE create indexes tbl name index IN VARCHAR2 tbl name vehicle IN VARCHAR2 tbl name dea
  • 检查 gRpc 服务器是否在 C# 中运行

    我正在用 C 编写一个 gRpc 服务器 如果服务器因任何原因关闭 我想添加自动恢复 重试实现 经过研究 我遇到了拦截器并感到兴奋 但看起来它只支持 Go 我找不到 gRpc C 的任何类似内容 如何在 gRpc CSharp 中处理自动恢