【问题标题】:In Azure Eventhub how to send incoming data to a sql database在 Azure Eventhub 中如何将传入数据发送到 sql 数据库
【发布时间】:2021-03-01 21:35:08
【问题描述】:

我收集了一些 xml 格式的数据。看起来像的东西

<OLDI_MODULE xmlns="">
 <StStoHMI_IBE>
<PRack>0</PRack>
<PRackSlotNo>0</PRackSlotNo>
<RChNo>0</RChNo>
<RChSlotNo>0</RChSlotNo>

此数据被发送到 Azure Eventhub。我想将此数据发送到 SQL 数据库。我在 Azure 流分析中创建了一个流,它接受此输入并将其放入 SQL 数据库中。但是当要求输入流的输入格式时,只有 JSON、CVS 和 Avro。我可以使用哪些格式?或者我应该使用哪个 azure 服务将数据从 Eventhub 移动到 sql 数据库?

【问题讨论】:

    标签: azure azure-eventhub azure-stream-analytics


    【解决方案1】:

    到目前为止,最简单的选择是按照您的预期使用 Azure 流分析。但是是的,您必须先将 xml 转换为 json 或其他支持的格式,然后才能使用数据。

    其他选项更复杂,需要一些代码和托管代码的方式(例如使用工作者角色或网络作业),但提供了最大的灵活性。该选项是使用EventProcessor 从事件中心读取数据并将其放入数据库中。

    请参阅https://azure.microsoft.com/en-us/documentation/articles/event-hubs-csharp-ephcs-getstarted/ 了解如何设置。

    主要工作在Task IEventProcessor.ProcessEventsAsync(PartitionContext context, IEnumerable messages)方法中完成。根据示例,它将类似于:

    async Task IEventProcessor.ProcessEventsAsync(PartitionContext context, IEnumerable<EventData> messages)
    {
        foreach (EventData eventData in messages)
        {
            string xmlData = Encoding.UTF8.GetString(eventData.GetBytes());
    
            // Parse the xml and store the data in db using Ado.Net or whatever you're comfortable with
        }
    
        //Call checkpoint every 5 minutes, so that worker can resume processing from 5 minutes back if it restarts.
        if (this.checkpointStopWatch.Elapsed > TimeSpan.FromMinutes(5))
        {
            await context.CheckpointAsync();
            this.checkpointStopWatch.Restart();
        }
    }
    

    【讨论】:

      【解决方案2】:

      JSON 将是在 Azure 事件中心中使用的一种很好的数据格式。在 Azure 事件中心收到数据后。您可以使用 Azure 流分析来移动数据 SQL DB。

      Azure 流分析由 3 部分组成:输入、查询和输出。其中 input 是事件中心, output 是 SQL DB。查询应该由您编写以选择所需的字段并输出。

      查看以下文章:

      https://azure.microsoft.com/en-us/documentation/articles/stream-analytics-define-outputs/

      流分析将是您应该考虑从事件中心移动数据的 Azure 资源

      【讨论】:

      • 我的数据库位于云中的虚拟机上。 Azure 流分析仅将其移动到 Azure SQLdb,如果它位于云中的 VM 中,则不会。
      猜你喜欢
      • 2020-11-26
      • 1970-01-01
      • 1970-01-01
      • 2022-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-13
      相关资源
      最近更新 更多