gpt4 book ai didi

c# - 增加 Google PubSub 的截止时间超时

转载 作者:行者123 更新时间:2023-11-30 23:04:41 25 4
gpt4 key购买 nike

在使用 C# 库向 Google PubSub 主题发布消息时,我们间歇性地遇到以下错误:

Exception: Grpc.Core.RpcException: Status(StatusCode=Unauthenticated, Detail="Deadline Exceeded")
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Google.Api.Gax.Grpc.ApiCallRetryExtensions.<>c__DisplayClass0_0`2.<<WithRetry>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Google.Cloud.PubSub.V1.Tasks.ForwardingAwaiter`1.GetResult()
at Google.Cloud.PubSub.V1.Tasks.Extensions.<>c__DisplayClass6_0`1.<<ConfigureAwaitHideErrors>g__Inner0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Google.Cloud.PubSub.V1.Tasks.ForwardingAwaiter`1.GetResult()
at Google.Cloud.PubSub.V1.SimplePublisherImpl.<PublishAsync>d__26.MoveNext()
at Google.Api.Gax.Grpc.ApiCallRetryExtensions.<>c__DisplayClass0_0`2.<<WithRetry>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---

Google 告诉我的是可配置的超时。我们正在像这样配置客户端库:

private SimplePublisher CreateSimplePublisher(int maxItems, int maxSizeBytes, TimeSpan maxDelay)
{
var credential = Credential.IsCreateScopedRequired ?
Credential.CreateScoped(PublisherClient.DefaultScopes) : Credential;
var channel = new Channel(
PublisherClient.DefaultEndpoint.Host,
PublisherClient.DefaultEndpoint.Port,
credential.ToChannelCredentials());
var publisherClient = PublisherClient.Create(channel);
return SimplePublisher.Create(
new TopicName(Project, Topic),
new[] { publisherClient },
new SimplePublisher.Settings
{
BatchingSettings = new BatchingSettings
(
elementCountThreshold: maxItems,
byteCountThreshold: maxSizeBytes,
delayThreshold: maxDelay
)
});
}

有谁知道如何在此配置中配置截止时间阈值?这是使用版本 1.0.0-beta13Google.Cloud.PubSub.V1 客户端库 nuget 包。

最佳答案

这似乎是通过将 PublisherSettings 对象传递给 PublisherClient.Create 调用来控制的。

private SimplePublisher CreateSimplePublisher(int maxItems, int maxSizeBytes, TimeSpan maxDelay)
{
var credential = Credential.IsCreateScopedRequired ?
Credential.CreateScoped(PublisherClient.DefaultScopes) : Credential;
var channel = new Channel(
PublisherClient.DefaultEndpoint.Host,
PublisherClient.DefaultEndpoint.Port,
credential.ToChannelCredentials());
//Add a specific timeout for the publish operation
var publisherClientSettings = new PublisherSettings
{
PublishSettings = CallSettings.FromCallTiming(CallTiming.FromTimeout(TimeSpan.FromMinutes(60)))
};
var publisherClient = PublisherClient.Create(channel,publisherClientSettings);
return SimplePublisher.Create(
new TopicName(Project, Topic),
new[] { publisherClient },
new SimplePublisher.Settings
{
BatchingSettings = new BatchingSettings
(
elementCountThreshold: maxItems,
byteCountThreshold: maxSizeBytes,
delayThreshold: maxDelay
)
});
}

关于c# - 增加 Google PubSub 的截止时间超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49232722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com