我正在使用kubernetes client for C#。
我遇到了一个问题,在40-50分钟后,控制台应用程序继续工作,但未注册任何事件。那是因为Watcher
即将到期。因此,我发现可以将timeoutSeconds
用于所使用的方法-WatchObjectAsync
。我更改了代码-为int.MaxValue
添加了timeoutSeconds
:
var path = $"api/v1/watch/secrets";
_secretWatcher = await client.WatchObjectAsync<V1Secret>(
timeoutSeconds: int.MaxValue,
path: path,
onEvent: new Action<WatchEventType, V1Secret>(DoSmthWithEvent));
但是问题仍然存在。但是现在发生在1.5到2个小时之后。
因此,我希望控制台应用程序始终运行,并对kubernetes中的对象更改做出反应。
我的问题是-如何正确使用WatchObjectAsync
或替代方法?有时我应该在Watcher
中重新创建_secretWatcher
对象吗?如果是这样,那么为什么参数timeoutSeconds
存在?
其他信息:
onClosed
回调中重新创建监视程序-正常工作。还是更好地使用while循环?