Рекомендации по циклу через коллекцию клиентов (EventHubProducerClient) - PullRequest
0 голосов
/ 27 апреля 2020

Я ищу совет по порядочному шаблону, так как теоретически мой код, который я собираюсь вставить, должен работать:

У меня есть класс, который реализует IAsyncDisposable

public class EventHubPublisher : IEventHubPublisher, IAsyncDisposable
{
    private List<EventHubProducerClient> _publishers;
    private EventHubProducerClient _currentPublisher;

Я устанавливаю список _publishers где-то в стеке, а затем пытаюсь опубликовать sh с помощью моего метода ниже:

public async Task Publish<T>(string partitionKey, T message) where T : IMessage
{
    foreach (var publisher in _publishers)
    {
        try
        {
            await TrySendAsync(partitionKey, message, publisher);
            break;
        }
        catch (Exception e)
        {
            _logger.LogError(
                $"Publishing with producer targeting EventHub {publisher.EventHubName} failed with message {e.Message}");
        }
    }
}

Ie, когда первый издатель не может опубликовать sh и исключение перехвачено, используйте следующего издателя в списке, если оно прошло успешно: отрыв от l oop.

Моя проблема в том, что итерация по al oop таким образом, чтобы добиться успеха, кажется немного неуклюжей - кто-нибудь может придумать лучший способ сделать это?

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