gpt4 book ai didi

c# - Azure Functions 事件中心绑定(bind)重试

转载 作者:行者123 更新时间:2023-12-02 07:10:26 26 4
gpt4 key购买 nike

我有一个带有输出绑定(bind)的 HTTP 触发函数,我正在使用 IAsyncCollector<string> outputEventHubMessages outputEventHubMessages.AddAsync("message")将消息发送到事件中心。

如果由于某种原因,事件中心发生中断/故障并且不接受消息,Azure Function 是否会重试发送?

谢谢。

最佳答案

如果能在输出绑定(bind)中内置此功能,那就太好了。但是,以下代码片段显示了向事件中心重试消息的示例。这个概念基于捕获输出绑定(bind)上的错误并向存储队列发送消息以重试过程:

    [FunctionName("Function4")]       
public static async Task<HttpResponseMessage> Run(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestMessage req,
[EventHub("%EventHub%", Connection = "connectionEventHub")] IAsyncCollector<string> outputEventHubMessages,
[Queue("%RetryQueue%")] IAsyncCollector<string> outputQueueRetryMessages,
TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");

// Get request body
string message = JsonConvert.SerializeObject(JObject.Parse(await req.Content.ReadAsStringAsync()));

try
{
await outputEventHubMessages.AddAsync(message);
await outputEventHubMessages.FlushAsync();
}
catch(Exception ex)
{
log.Error(ex.Message);
//await Task.Delay(5000);
await outputQueueRetryMessages.AddAsync(message);
}

return req.CreateResponse(HttpStatusCode.OK);
}

队列可以在host.json文件中配置:

{
"queues": {
"maxDequeueCount": 3,
"visibilityTimeout": "00:00:30"
}
}

关于c# - Azure Functions 事件中心绑定(bind)重试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46052185/

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