【发布时间】:2019-02-12 13:56:33
【问题描述】:
我是 API 开发的新手,我想创建一个 Web API 端点来接收大量日志数据。我想通过 Amazon Kinesis 传输流 将该数据发送到 Amazon s3 存储桶。下面是一个运行良好的示例应用程序,但我不知道如何摄取大量入站数据以及我的 API 应该以什么格式接收数据?我的 API 端点应该是什么样子。
[HttpPost]
public async void Post() // HOW to allow it to receive large chunk of data?
{
await WriteToStream();
}
private async Task WriteToStream()
{
const string myStreamName = "test";
Console.Error.WriteLine("Putting records in stream : " + myStreamName);
// Write 10 UTF-8 encoded records to the stream.
for (int j = 0; j < 10000; ++j)
{
// I AM HARDCODING DATA HERE FROM THE LOOP COUNTER!!!
byte[] dataAsBytes = Encoding.UTF8.GetBytes("testdata-" + j);
using (MemoryStream memoryStream = new MemoryStream(dataAsBytes))
{
PutRecordRequest putRecord = new PutRecordRequest();
putRecord.DeliveryStreamName = myStreamName;
Record record = new Record();
record.Data = memoryStream;
putRecord.Record = record;
await kinesisClient.PutRecordAsync(putRecord);
}
}
}
P.S:在现实世界的应用程序中,我不会有那个 for 循环。我希望我的 API 能够摄取大数据,我的 API 应该如何定义?我需要使用名为 multiform/data、file 的东西吗?请指导我。
【问题讨论】:
-
目的是什么?您想阅读并将其发送到 s3 吗?还是你要分析?
-
是的,我将使用 Athena 来分析它。
-
如何在我的端点接收应用程序日志数据?你能提供一个示例吗?我的API 应该以什么格式接收数据?
-
@VolodymyrBilyachat:请指导我。
-
WebApi 是处理这些数据的错误方式。文件有多大?
标签: c# .net rest asp.net-web-api asp.net-web-api2