【发布时间】:2017-03-21 10:51:30
【问题描述】:
我有一个 Azure 函数,我想让它从 EventHub 获取消息(这相当简单且有效),然后在运行时使用表绑定将该信息放入表存储中。
这是我目前所拥有的:
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) 即使输出不为空,我也不知道 OperationContext 需要什么,或者调用 ITableEntity.Write() 是否是让它写入表存储的正确方法。
ETA Json 绑定:
{
"bindings": [
{
"type": "eventHubTrigger",
"name": "eventHubMessage",
"direction": "in",
"path": "measurements",
"connection": "MeasurementsConnectionString"
}
],
"disabled": false
}
【问题讨论】:
-
@mikhail,我添加了 JSON。我想在运行时根据从集线器传入的表名进行绑定。我有很多表,我需要命令式绑定。
标签: c# azure azure-functions azure-table-storage