2

我对WebJobs非常陌生,而且我正在努力处理看起来微不足道的事情。我有一个名为“mydatastorage”的存储帐户和一个名为“mydatacontainer”的容器。我一直在网上搜寻网络,试图执行以下基本场景:Azure存储将Blob分析到表中

我有大量的blob(已存储在Azure中)是html文件。我写了一些代码,可以将html字符串转换为TableEntity。然后我想将TableEntity保存到表“mydatatable”中。看起来我可以使用[Table]属性来简化将实体保存到表的过程,或者将其手动保存到方法调用中的表中。我的问题就是让方法签名正确,然后如何让blob进入该方法。我对[Blob],[BlobTrigger]等所有属性以及类型如ICollector<T>以及使用它们的正确方法(以及何时)都有些困惑。如果有人知道一个教程,解释类似的情况,这个我很想知道它。

回答

5

尝试使用this page了解有关使用BlobTrigger的信息。我们所有关于WebJobs SDK的最新文档都可以在这个主要的资源页面找到(http://azure.microsoft.com/en-us/documentation/articles/websites-webjobs-resources)。

下面是一个例子,指出你在正确的方向。您可以设置BlobTrigger以在添加斑点时触发,并使用TableAttribute绑定到输出表。绑定将为您添加到它的任何实例添加表实体。您可以在上述资源链接中的表绑定上找到更多选项。希望这可以帮助。

public static void ImportHtmlBlob(
    [BlobTrigger("input/{name}")] Stream input, 
    string name, 
    [Table("yourtable")] ICollector<YourTableType> output) 
{ 
    ... 
} 
+0

您提供的第一个链接非常有帮助,第二个链接需要一些时间才能完成。感谢伟大的链接!我确实有一个问题。此代码是否会选取Blob存储中已存在的Blob(这正是我想要的)?它看起来不是,或者我只是需要更耐心地等待它开始处理斑点?我有一个10万个html blob,所以也许我只是没有耐心,或者我需要做其他事情来启动现有的blob流程? – Beaker

+0

BlobTrigger使用的扫描/触发算法在我链接到上面的第一页中详细介绍(再次[here](https://azure.microsoft.com/zh-cn/documentation/articles/websites-dotnet-webjobs-sdk-存储二进制大对象 - 如何做/))。对于先前存在的斑点,这些将在启动扫描期间被拾取。你应该看到它们开始被处理,并且在处理之后它们将为每个处理器写一个blob收据,详见该帮助页面。 – mathewc