我有一个连续的Azure WebJob,它运行QueueInput
,生成报告,并将文件输出到BlobOutput
。此作业将针对不同的数据集运行,每个数据都需要唯一的输出文件。 (保证输入的数量会随着时间的推移而显着缩放,因此我无法为每个输入编写单个作业。)我希望能够从QueueInput
运行它,但我找不到设置方法输出基于QueueInput
值,或除blob输入名称之外的任何值。
作为一个例子,这基本上就是我想要做的,虽然它是无效代码而且会失败。
public static void Job([QueueInput("inputqueue")] InputItem input, [BlobOutput("fileoutput/{input.Name}")] Stream output)
{
//job work here
}
我知道我可以做一些类似if I used BlobInput
而不是QueueInput
的事情,但我更愿意使用队列来完成这项工作。我是否遗漏了某些内容或正在生成QueueInput
的唯一不可能的输出?
答案 0 :(得分:1)
有两种选择:
IBInder
生成blob名称。如these samples 答案 1 :(得分:1)
通过Advanced bindings with the Windows Azure Web Jobs SDK在Curah's Complete List of Web Jobs Tutorials and Videos找到解决方案。
引用后代:
一种方法是使用IBinder接口绑定输出blob并指定等于order id的名称。更好更简单的方法(SimpleBatch)是将blob名称占位符绑定到队列消息属性:
public static void ProcessOrder(
[QueueInput("orders")] Order newOrder,
[BlobOutput("invoices/{OrderId}")] TextWriter invoice)
{
// Code that creates the invoice
}
blob名称中的{OrderId}占位符从newOrder对象的OrderId属性中获取其值。例如,newOrder是(JSON):{“CustomerName”:“Victor”,“OrderId”:“abc42”}然后输出blob名称是“invoices / abc42”。占位符区分大小写。
因此,您可以在QueueInput
字符串中引用BlobOutput
对象中的各个属性,它们将被正确填充。