在 Azure Eventhub 中如何将传入数据发送到 sql 数据库
In Azure Eventhub how to send incoming data to a sql database
我收集了一些 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 数据库?
JSON 是一种适合在 Azure 事件中心使用的数据格式。在 Azure 事件中心收到数据后。您可以使用 Azure 流分析来移动数据 SQL 数据库。
Azure 流分析由 3 个部分组成:输入、查询和输出。其中输入是事件中心,输出是 SQL 数据库。您应该将查询写入 select 所需的字段并输出。
查看以下文章:
https://azure.microsoft.com/en-us/documentation/articles/stream-analytics-define-outputs/
Stream Analytics 是您应该研究的 Azure 资源,用于从事件中心移动数据
到目前为止,最简单的选择是按预期使用 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();
}
}
我收集了一些 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 数据库?
JSON 是一种适合在 Azure 事件中心使用的数据格式。在 Azure 事件中心收到数据后。您可以使用 Azure 流分析来移动数据 SQL 数据库。
Azure 流分析由 3 个部分组成:输入、查询和输出。其中输入是事件中心,输出是 SQL 数据库。您应该将查询写入 select 所需的字段并输出。
查看以下文章:
https://azure.microsoft.com/en-us/documentation/articles/stream-analytics-define-outputs/
Stream Analytics 是您应该研究的 Azure 资源,用于从事件中心移动数据
到目前为止,最简单的选择是按预期使用 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();
}
}