Разве политика Polly Bulkhead сама размещает вызовы в потоках? - PullRequest
0 голосов
/ 17 декабря 2018

У меня определены следующие политики Polly :

sharedBulkhead = Policy.Bulkhead(maxParallelizations, maxQueuingActions);
resilienceStrategy = Policy.Wrap(retryPolicy, circuitBreaker, sharedBulkhead);
policyWrap = fallbackForAnyException.Wrap(fallbackForCircuitBreaker.Wrap(resilienceStrategy));

Я выполняю политику следующим образом:

public bool Notify(IGrouping<string, TModel> messages)
    {
        var endPoint = messages.Key;
        Task.Run(() =>
        {
            foreach (var message in messages)
            {
                policyWrap.Execute((context) => CallApi(endPoint), new Context(endPoint));
            }
        });

        return true;
    }

Я хочу, чтобы каждый вызов Notify()запустить в новой теме.Итак, мой вопрос: должен ли я явно вызывать Task.Run(() => для нового потока, или он автоматически запускается в новом потоке с помощью polly?

1 Ответ

0 голосов
/ 17 декабря 2018

Я хочу, чтобы каждый вызов Notify () выполнялся в новом потоке.Итак, мой вопрос: [...] это автоматически запускается в новом потоке с помощью polly?

Нет.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.он предполагает, что вышестоящие системы уже поместили вызовы в потоки, но ограничивают их распараллеливание выполнения

В Polly нет концепции планирования задач (с использованием TaskScheduler) (за исключением, для полноты, вочень специализированный случай синхронного пессимистического TimeoutPolicy).

Однако для полноты все Политики Polly являются поточно-ориентированными.

...