如何触发 ServiceBusTrigger?
How to trigger a ServiceBusTrigger?
我有一个 Azure WebJob,里面有类似的代码:
public class Functions
{
public static void GenerateImagesForViewer(
[QueueTrigger("resize-images-queue")] BlobInformation blobInfo,
[Blob("unprocessed-pdf-storage-container/{BlobName}", FileAccess.Read)] Stream input,
[Blob("unprocessed-pdf-storage-container/{BlobNameWithoutExtention}-pdf.jpg")] CloudBlockBlob outputPdf)
{
//Do something here
string connectionString = "myConnectionString";
TopicClient Client =
TopicClient.CreateFromConnectionString(connectionString, "resize-
images-topic");
var topicMessage = new BrokeredMessage(blobInfo);
Client.Send(topicMessage);
}
public static void GenerateImagesForViewerW80(
[ServiceBusTrigger("resize-images-topic", "SizeW80")] BlobInformation blobInfo,
[Blob("unprocessed-pdf-storage-container/{BlobNameWithoutExtention}-pdf.jpg", FileAccess.Read)] Stream input,
[Blob("processed-image-storage-container/{BlobNameWithoutExtention}-h0-w80.jpg")] CloudBlockBlob outputBlob_0_80)
{
// It never comes here
//Do something here
}
}
将数据(BlobInformation 对象)上传到我的队列后,触发第一个方法(GenerateImagesForViewer)没有问题。但是当我尝试向主题发送数据(BlobInformation 对象)时,它永远不会触发任何订阅者(GenerateImagesForViewerW80)。是代码有问题,还是Azure有要求的配置?
在Program.cs中,config.UseServiceBus();
是使用ServiceBus触发器所必需的。如果 Functions
中有其他触发器或绑定,就像您的情况一样,我们将不会看到警告。
请参阅下面的代码示例并检查 official guidance 以了解更多详细信息。
var config = new JobHostConfiguration();
if (config.IsDevelopment)
{
config.UseDevelopmentSettings();
}
config.UseServiceBus();
var host = new JobHost(config);
host.RunAndBlock();
此外,我在您的输入和输出 blob 路径中看到一些可疑的空白。如果和你原来的代码一样,就把它们去掉,否则触发器不会正确执行blob操作相关的代码。
我有一个 Azure WebJob,里面有类似的代码:
public class Functions
{
public static void GenerateImagesForViewer(
[QueueTrigger("resize-images-queue")] BlobInformation blobInfo,
[Blob("unprocessed-pdf-storage-container/{BlobName}", FileAccess.Read)] Stream input,
[Blob("unprocessed-pdf-storage-container/{BlobNameWithoutExtention}-pdf.jpg")] CloudBlockBlob outputPdf)
{
//Do something here
string connectionString = "myConnectionString";
TopicClient Client =
TopicClient.CreateFromConnectionString(connectionString, "resize-
images-topic");
var topicMessage = new BrokeredMessage(blobInfo);
Client.Send(topicMessage);
}
public static void GenerateImagesForViewerW80(
[ServiceBusTrigger("resize-images-topic", "SizeW80")] BlobInformation blobInfo,
[Blob("unprocessed-pdf-storage-container/{BlobNameWithoutExtention}-pdf.jpg", FileAccess.Read)] Stream input,
[Blob("processed-image-storage-container/{BlobNameWithoutExtention}-h0-w80.jpg")] CloudBlockBlob outputBlob_0_80)
{
// It never comes here
//Do something here
}
}
将数据(BlobInformation 对象)上传到我的队列后,触发第一个方法(GenerateImagesForViewer)没有问题。但是当我尝试向主题发送数据(BlobInformation 对象)时,它永远不会触发任何订阅者(GenerateImagesForViewerW80)。是代码有问题,还是Azure有要求的配置?
在Program.cs中,config.UseServiceBus();
是使用ServiceBus触发器所必需的。如果 Functions
中有其他触发器或绑定,就像您的情况一样,我们将不会看到警告。
请参阅下面的代码示例并检查 official guidance 以了解更多详细信息。
var config = new JobHostConfiguration();
if (config.IsDevelopment)
{
config.UseDevelopmentSettings();
}
config.UseServiceBus();
var host = new JobHost(config);
host.RunAndBlock();
此外,我在您的输入和输出 blob 路径中看到一些可疑的空白。如果和你原来的代码一样,就把它们去掉,否则触发器不会正确执行blob操作相关的代码。