Ребус откат и поддержка Полли - PullRequest
0 голосов
/ 16 мая 2019

У меня есть вопросы по политике возврата:

1 Можно ли его использовать как для Publiser (сообщения в очереди), так и для подписчика (сообщения очереди)?

2 Является ли Rebus Политика отсрочки такой же, как Polly's Retry ? Но в приведенном ниже описании упоминается простой, который меня немного смущает.

   //
    // Summary:
    //     Configures the timespans to wait when backing off polling the transport during
    //     idle times. backoffTimes must be a sequence of timespans, which indicates the
    //     time to wait for each second elapsed being idle. When the idle time exceeds the
    //     number of timespans, the last timespan will be used.
    public static void SetBackoffTimes(this OptionsConfigurer configurer, params TimeSpan[] backoffTimes);



Configure.With(...)
    .(...)
    .Options(o => {
        o.SetBackoffTimes(
            TimeSpan.FromMilliseconds(100),
            TimeSpan.FromMilliseconds(200),
            TimeSpan.FromSeconds(1)
        );
    })
            .Start();

3 Rebus поддерживает расширение Polly? Например, экспоненциальный откат плюс некоторое дрожание, как в нижней части

Random jitterer = new Random(); 
Policy
  .Handle<HttpResponseException>() // etc
  .WaitAndRetry(5,    // exponential back-off plus some jitter
      retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt))  
                    + TimeSpan.FromMilliseconds(jitterer.Next(0, 100)) 
  );

https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/implement-resilient-applications/implement-http-call-retries-exponential-backoff-polly

4 Я не могу найти ISyncBackoffStrategy на последнем орехе Ребуса. Это устарело?

 Configure.With(...)
        .(...)
        .Options(o => {
            o.Register<ISyncBackoffStrategy>(c => {
                var strategy = new MyOwnBackoffStrategy();
                return strategy;
            });
        })
        .Start();

https://github.com/rebus-org/Rebus/wiki/Back-off-strategy

1 Ответ

0 голосов
/ 16 мая 2019

Стратегия отката Rebus используется только потребителем сообщений, поэтому она может расслабиться, когда меньше работы.

Дело не в RETRY, а в простоте процессора в простоте.

Термин «время простоя» в документации просто означает «время, когда сообщения не были получены».Таким образом, до тех пор, пока в очереди есть сообщения, Rebus будет обрабатывать сообщения так быстро, как вы сможете их обработать, но если вдруг очередь пуста, она будет постепенно опрашиваться все реже и реже.

Вы можете реализоватьсвою собственную стратегию отсрочки, реализовав IBackoffStrategy (теперь это называется, я соответственно обновил вики).

...