2016-04-06 3 views
1

Возможно ли инициировать выполнение веб-задания из почтового запроса? Мой сценарий заключается в том, что задание ожидает, что поставщик данных опубликует данные по https, и это должно инициировать обработку данных, анализируя данные, а затем применяя некоторые бизнес-действия. Я вижу много примеров с очередями, и их легко проверить и сделать самостоятельно, но не уверен, как заполнить очередь, кроме как вручную, чтобы ввести некоторые данные. Возможно ли каким-то образом заполнить очередь данными http post?Azure WebJob Запущено по запросу WebPost

ответ

0
  • Вы можете использовать Azure ServiceBus Queue.

    Azure Webjobs имеет ServicebusTrigger, который вы можете использовать в своем сценарии .

    Если вы не можете использовать клиентскую библиотеку вы можете отправлять сообщения в очередь через HTTP:

    Service Bus brokered messaging REST tutorial

  • В противном случае, если ваше сообщение слишком велик, вы можете сохранить ваше сообщение в Azure Storage Blob. У Azure Webjobs есть BlobTrigger. Но есть некоторые ограничения:

    WebJobs SDK сканирует файлы журнала, чтобы следить за новыми или измененными блоками. Этот процесс не в режиме реального времени; функция может не срабатывать до нескольких минут или дольше после создания блоба. Кроме того, storage logs are created on a "best efforts"; нет никакой гарантии, что все события будут захвачены. В некоторых условиях журналы могут быть пропущены. Если ограничения скорости и надежности триггеров blob неприемлемы для вашего приложения, рекомендуемым методом является создание сообщения очереди при создании блоба и использование атрибута QueueTrigger вместо атрибута BlobTrigger для функции, которая обрабатывает blob.

+0

Я вижу, как ваша идея может работать. Теперь я беспокоюсь, что сообщения, которые были отправлены с служебной шины, будут слишком большими - может быть, около 2-3 МБ xml данных. В моем случае, вероятно, лучше настроить простое веб-приложение, которое поймает все почтовые запросы и сохранит их где-нибудь в БД. Затем это создаст сообщение в очереди сообщений, которое будет обработано webjob при прослушивании изменений. Я даже думаю, почему бы не сделать этот процесс в самом веб-приложении, так как очередь может быть процессом с некоторой долей. Мне нужно, чтобы сообщение было обработано немедленно по мере его поступления, и решение было масштабируемым. –

+0

Сообщение, которое получит webjob, будет состоять только в том, что получен новый элемент, а затем будет считываться XML-данные из БД. Разве это не слишком сложное мышление? Это будет легко масштабировать. Я могу увеличить количество заданий, но не уверен в том, что веб-приложение действительно получает данные. Думаю, это можно сделать с помощью балансировки нагрузки. То, что я, вероятно, сделаю, изначально является самым простым решением. –

+1

, чтобы вы могли использовать хранилище blob. есть blobtrigger для webjob. https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-storage-blobs-how-to/. Завтра я отредактирую свой пост. – Thomas

 Смежные вопросы

  • Нет связанных вопросов^_^