c# - 如何调试 Azure EventHub?

标签 c# azure azure-eventhub

我稍后尝试将数据发送到 Azure 事件中心,以供流分析和 PowerBI 使用。

当我测试事件中心时,我的 C# 应用程序正在发送一个简单的测试字符串(JSON 格式),但是当我想要处理事件中心中的数据时,它告诉我没有发送任何数据。

我不确定如何调试集线器以查看为什么消息不显示,我尝试在 google 上查找调试文档,但在搜索调试 azure 事件中心时没有找到

如何找到与此相关的任何错误消息?

为了测试目的,我的 C# 代码被简化为这样

private async Task SendMessageToEventHub(string messageToSend)
{
    var connectionStringBuilder = new EventHubsConnectionStringBuilder(EventHubConnectionString)
    {
        EntityPath = EventHubName
    };

    eventHubClient = EventHubClient.CreateFromConnectionString(connectionStringBuilder.ToString());

    try
    {
        await eventHubClient.SendAsync(new EventData(Encoding.UTF8.GetBytes(messageToSend)));
    } catch (Exception exception) {
        _logger.LogInformation($"-PimLog- -ProductInfoController- {DateTime.Now}, > Exception: {exception.Message} ");
    }

    _logger.LogInformation($"-PimLog- -ProductInfoController- {DateTime.Now}, EventHub Message Sent Successfully ");
}

我确实看到了“消息发送成功”的日志消息,因此没有明显的错误。

当我尝试在 azure 门户中运行查询时,我收到以下消息

There is no data from input 'pimhub'. Please make sure the input source has data and then try again.

如何进一步调试?

最佳答案

根据我的经验,我一直使用 Azure 门户指标来调试事件中心和流分析链。

首先,您应该转到事件中心概述并检查输出请求的数量是否与输入请求的数量相同,如下图所示

enter image description here

此外,检查用户错误和服务器错误指标以查看事件发送时是否没有错误。 如果所有指标都正常,您应该检查流分析。使用metrics检查是否存在以下错误之一

  1. 数据转换错误 --> 流分析尝试保存到输出时出现错误
  2. 输入反序列化错误 --> 大多数情况下是查询错误
  3. 运行时错误 --> 必须进行调查

我还注意到,很多时候门户无法从 EH 捕获事件来测试 ASA 查询(正如您提到的)。老实说,我不知道为什么,但一个技巧可能是复制要在文件中发送的 json 对象,然后使用“从文件上传示例数据”选项通过门户测试查询(ASA --> 查询 - -> 输入)。

希望对你有帮助

关于c# - 如何调试 Azure EventHub?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57508391/

相关文章:

c# - CaSTLe.Windsor 3.1 - 组件激活器 : could not proxy <FactoryName>

azure - 如何清除 Azure Functions 中的 nuget 缓存

c# - 根据输入从 Azure 函数启动和停止 Docker 容器

c# - GZip/Deflate 压缩适用于 .NetCore 2.0,但不适用于 .Net 4.6.2

c# - 限制查询以忽略元素后代

使用 RDP 8.0 的 C# 自定义远程桌面客户端

azure - 自动加载器过滤重复项

java - 如何使用 Spark 和 Java 来使用来自 Azure eventhub 的数据

c# - 为我发送的每条消息创建 EventHubClient 是否正确?

java - 如何使用 Rest API 或某些 SDK Api 创建 Azure 事件中心