Как вызвать ServiceBusTrigger? - PullRequest
       42

Как вызвать ServiceBusTrigger?

0 голосов
/ 05 ноября 2018

У меня есть 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 есть необходимая конфигурация?

1 Ответ

0 голосов
/ 06 ноября 2018

В Program.cs, config.UseServiceBus(); необходимо для использования триггера ServiceBus. Мы не увидим предупреждение, если в Functions есть другие триггеры или привязки, как в вашем случае.

См. Пример кода ниже и проверьте официальное руководство для получения более подробной информации.

        var config = new JobHostConfiguration();

        if (config.IsDevelopment)
        {
            config.UseDevelopmentSettings();
        }
        config.UseServiceBus();
        var host = new JobHost(config);
        host.RunAndBlock();

Кроме того, я вижу некоторую подозрительную пробел в вашем пути ввода и вывода BLOB. Если он совпадает с исходным кодом, просто удалите их, иначе триггер не выполнит код, связанный с операцией BLOB-объекта, корректно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...