首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure函数:已释放Servicebustrigger -> BrokeredMessage

Azure函数:已释放Servicebustrigger -> BrokeredMessage
EN

Stack Overflow用户
提问于 2018-03-14 12:24:18
回答 1查看 962关注 0票数 0

我写了很多具有类似功能的Webjobs,其中类似的代码工作得很好。但是用Azure函数代替,我有时会出错。

代码语言:javascript
复制
[FunctionName("Alert")]
public static async void Alert([ServiceBusTrigger(Topic.Alert, Subscription.Sql, AccessRights.Listen, Connection = "servicebusconnectionstring")] BrokeredMessage message, TraceWriter log)
{
    using (var stream = message.GetBody<Stream>())
    {
        using (var memoryStream = new MemoryStream())
        {
            stream.CopyTo(memoryStream);
            var json = Encoding.UTF8.GetString(memoryStream.ToArray());

            try
            {
                throw new Exception("Test-Exception");
            }
            catch (Exception e)
            {
                EventLogger.LoggException("Function.Sql.Alert", e, new Dictionary<string, string>() { { "Messsage", json } });
                if (message.DeliveryCount >= 5)
                {
                    EventLogger.LoggEvent("DeadLetterQueue", new Dictionary<string, string>() { { "Function", "Function.Sql.Alert" }, { "Messsage", json } });
                    await QueueService.SendAsync(Queue.Deadletter, JsonConvert.DeserializeObject<CloudAlert>(json));
                    await message.CompleteAsync();
                }
                else
                    await message.AbandonAsync();
            }
        }
    }
    await message.CompleteAsync();
}

问题是,当我调用message.AbandonAsync()或message.CompleteAsync时,有时会抛出

System.ObjectDisposedException: BrokeredMessage已经被处理了。

如果在结束时不调用message.CompleteAsync(),则消息仍被标记为已完成。我可以接受这一点,但我也希望能够放弃这个信息,而且这个函数也并不总是起作用。

有人做了类似的事情并找到了解决方案?使用.NET标准2.0并遵循ServiceBus的NuGet包: Microsoft.Azure.ServiceBus v2.0.0

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-14 12:41:07

您不应该手动完成或放弃消息。Azure函数运行库将根据您的函数执行的失败(异常)的成功来执行它。

所以,如果你想放弃,就抛出一个异常。这将是自动重试,直到最大交付计数限制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49277720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档