繁体   English   中英

如何在使用输出绑定到服务总线的 azure 函数中记录错误?

How to log errors in an azure function that uses an output binding to a service bus?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个 azure 函数,它使用输出绑定将消息发送到服务总线主题。 如果消息无法添加到服务总线,我需要记录自定义数据,但只有在内置重试失败之后。 问题是,我不确定在哪里写这样的日志语句? 以下是否可以接受? 我的猜测是这会在重试策略失败之前记录错误,所以如果发生暂时性错误,下面的日志语句将在每次重试时执行。

[FunctionName("MessageLoader")]
[return: ServiceBus("%Topic_Name%", Connection = "Topic_Connection")]
public static async Task<TopicMessage> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "domain/load-message")] HttpRequestMessage req)
{
    try
    {
        var stringRequestBody = await req.Content.ReadAsStringAsync();
        return JsonConvert.DeserializeObject<TopicMessage>(stringRequestBody);
    }
    catch
    {
        _log.LogError("Could not send message: " + customBusinessObject.custom_message"); }
    }
}
1 个回复

如果您想在将输出发送到服务总线主题时检查您的功能,那么您这边的输出绑定使用方式是错误的。

按照您的方式,如果发送消息出错,它将转到 catch 中的逻辑。 但是请注意,您仍然需要返回一些东西。 所以这种方式是不对的。

你不应该使用输出绑定作为返回类型,请这样做:

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;

namespace _20201012
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            [ServiceBus("bowman1012", Connection = "ServiceBusConnectionString1")] IAsyncCollector<dynamic> outputServiceBus,
            ILogger log)
        {
            try
            {
                await outputServiceBus.AddAsync("Item1");
            } catch {
                log.LogError("Could not send message: ...");
            }
            return new OkObjectResult(null);
        }
    }
}
1 基于 Java 的 Azure 函数的服务总线输出绑定不起作用 - 没有错误

我尝试构建由 HTTP 触发的基于 Java 的 Azure 函数并将数据发送到服务总线的主题。 这是基于示例代码。 HTTP 触发器工作正常(返回 Hello 名称),但我没有收到任何发送到服务总线的数据。 而且我没有收到错误消息。 我已经使用基于 C# 的函数测试了 local.setting ...

2 Azure Function Service总线输出绑定错误

我在使用Azure Service Bus输出绑定时遇到问题,不确定如何进行。 我没有运气找到类似的问题,因此,如果这是重复的,我深表歉意。 我正在尝试使用本地VS 2017开发流程,因此应该自动生成function.json绑定。 功能签名如下: 在本地运行该函数时,出现以下 ...

4 在Azure Function中为Azure Service Bus输出绑定创建自定义转换器

我目前正在这样写服务总线: 我想通过实施等中记载的自定义转换器简化了这个位置。 我已经查看过Azure Functions Service Bus Extensions的来源,但是一切似乎都是内部的,因此我不确定是否可以在其中放置用于序列化消息的代码的地方添加自定义绑定。 有什么方法可以添加此 ...

6 日志中的Masstransit Azure Service Bus 404错误

我正在将Masstransit与Azure Service Bus一起使用dotnet核心来处理一个传奇。 该应用程序的核心功能按预期工作,但是当尝试访问它创建的内部队列时,Masstransit的日志显示404错误。 记录的异常是: 该错误在应用程序启动后约5分钟开始,这似乎是 ...

9 Azure功能Service Bus输出绑定

今天,我将VS 2017更新到版本15.3(最新版本)。 我还安装了Azure函数扩展(适用于Azure函数的Visual Studio 2017工具)和Microsoft.NET.Sdk.Functions-版本1.0.0。 在更新之前,我使用的是15.3预览版和带有安装包Microsof ...

10 如何通过服务总线消息触发 Azure 函数并将消息输出到单个 Azure 函数中的服务总线

我需要根据服务总线消息触发一个 Azure 函数,该函数将执行一些逻辑并将一些消息写回服务总线,这些消息可能会触发另一个 Azure 函数等。 我不了解如何以标准方式正确地做到这一点。 基于本文档Azure 函数的 Azure 服务总线触发器,我们可以做第一部分:通过服务总线消息触发 azure ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM