저는 Azure 함수를 가지고 있으며 EventHub에서 메시지를 가져 와서 (이 작업은 매우 간단하고 효과적입니다) 런타임에 테이블 바인딩을 사용하여 해당 정보를 테이블 저장소에 저장하려고합니다. 여기 Azure 함수를 테이블 저장소에 저장
는 지금까지이 작업은 다음과 같습니다public static async Task Run(string eventHubMessage, TraceWriter log, Binder binder)
{
var m = JsonConvert.DeserializeObject<Measurement>(eventHubMessage);
var attributes = new Attribute[]
{
new StorageAccountAttribute("AzureWebJobsTest"),
new TableAttribute(tableName, m.PartitionKey, m.RowKey)
};
using(var output = await binder.BindAsync<MyTableEntity>(attributes))
{
if(output == null)
log.Info($"4. output is null");
else
{
output.Minimum = m.Minimum;
output.Maximum = m.Maximum;
output.Average = m.Average;
output.Timestamp = m.Timestamp;
output.ETag = m.ETag;
output.WriteEntity(/* Need an operationContext*/)
}
}
}
public class MyTableEntity : TableEntity, IDisposable
{
public double Average { get; set;}
public double Minimum { get; set;}
public double Maximum { get; set;}
bool disposed = false;
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (disposed)
return;
if (disposing)
{
}
disposed = true;
}
}
내 문제;
1) 출력은 이고 항상입니다.
2) 출력이 null이 아니더라도 OperationContext에 필요한 항목이나 ITableEntity.Write()를 호출하여 테이블 저장소에 쓸 수있는 올바른 방법인지 알 수 없습니다.
ETA JSON 바인딩 :
{
"bindings": [
{
"type": "eventHubTrigger",
"name": "eventHubMessage",
"direction": "in",
"path": "measurements",
"connection": "MeasurementsConnectionString"
}
],
"disabled": false
}
@mikhail, JSON을 추가했습니다. 나는 허브에서 전달되는 tablename을 기반으로 런타임에 바인딩을 수행하려고합니다. 나는 많은 테이블을 가지고 있고 나는 명령형 바인딩이 필요하다. – Stuart