Можем ли мы создать бесконечное задание / задачу (вроде роли Azure Worker) с помощью Hangfire?

Я хотел бы знать, можем ли мы создать бесконечное задание / задачу (вроде роли Azure Worker) с помощью Hangfire. Я хотел бы поставить электронные письма в очередь Azure, используя запланированное задание Hangfire (каждые 4 часа), а затем запустить бесконечный огонь Hangfire и забыть задание / задачу (при запуске веб-сайта) для обработки (удаления из очереди) каждого электронного письма и отправки его в Amazon SES каждые 200 миллисекунд (5 писем в секунду). Бесконечное задание должно работать все время, чтобы обрабатывать новые электронные письма из очереди.

Итак, с точки зрения производительности можно ли это сделать, а затем как управлять потенциальными ошибками, которые могут остановить бесконечное задание, и как перезапустить его при необходимости. В задании бесконечного цикла я должен также создать новую задачу «запустить и забыть» для каждого электронного письма, чтобы иметь возможность сделать еще одну попытку повторения для каждого письма. Мой сервер Hangfire будет размещен на веб-сайте Azure.

Наконец, я делаю все это, потому что Amazon SES не может ставить электронные письма в очередь. Моя подписка на Amazon AWS разрешает мне отправлять 15 писем в секунду.

Надеюсь, это ясно, спасибо,


person morindo    schedule 31.01.2015    source источник


Ответы (1)


Не уверен, почему вы хотите использовать Hangfire для этой цели, но веб-задания Azure кажутся вполне подходящими, если они могут обрабатывать сообщения в очереди Azure прямо из коробки.

https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-storage-queues-how-to/#trigger

Затем вы можете поставить задание Hangfire в очередь, когда очередь чем-то заполнена.

public static void ProcessQueueMessage([QueueTrigger("emailqueue")] string email, TextWriter logger)
{
    BackgroundJobClient.Enqueue(() => SendEmail(email));
}
person Aditya Santoso    schedule 31.07.2015
comment
Вы не указываете, почему Hangfire не подходит, поэтому не ответили на вопрос. - person SamuelKDavis; 30.11.2017