проглатывание в лазурном хабе событий не удается каждое утро

отправка событий в eventhub не удается каждое раннее утро с сообщением ниже. Я замаскировал номер, так как не уверен, что это за номер, и из соображений безопасности. (Код и ошибка ниже)

  1. Я постоянно отправляю ~ 240 событий в минуту очень маленького размера, так что это не должно быть проблемой.
  2. У меня есть 2 раздела и 2 потребителя для моего хаба событий. Сообщите мне, знает ли кто-нибудь из вас решение или ему нужна дополнительная информация. Спасибо!

Ошибка: сообщение: произошла ошибка во время связи с «XXXXX06f186e4bb89aea2d8959bXXXXX_GXX». Проверьте информацию о соединении, затем повторите попытку.

StackTrace: в Microsoft.ServiceBus.Common.AsyncResult.End [TAsyncResult] (результат IAsyncResult), в Microsoft.ServiceBus.Common.AsyncResult1.End (IAsyncResult asyncResult), в Microsoft.ServiceBus.Messaging.MessagingResult, asyncResult, в Microsoft.ServiceBus.MessagingInjectResult Microsoft.ServiceBus.Messaging.SingletonManager1.EndGetInstance (IAsyncResult asyncResult) в Microsoft.ServiceBus.Messaging.Amqp.AmqpMessageSender.OnEndOpen (результат IAsyncResult) в Microsoft.ServiceBus.MessagingEndOpen. OpenOnceManager.OnEndCreateInstance (IAsyncResult AsyncResult) при Microsoft.ServiceBus.Messaging.SingletonManager1.EndGetInstance (IAsyncResult AsyncResult) при Microsoft.ServiceBus.Messaging.OpenOnceManager.OpenOnceManagerAsyncResult1.OpenComplete (IAsyncResult результат) в Microsoft.ServiceBus.Common.AsyncResult.SyncContinue (IAsyncResult результат ) в Microsoft.ServiceBus.Messaging.OpenOnceManager.OpenOnceManagerAsyncResult1..ctor (OpenOn ceManager openOnceManager, TimeSpan openTimeout, обратный вызов AsyncCallback, состояние объекта, Func3 beginOperation, EndOperation1 endOperation) в Microsoft.ServiceBus.Messaging.OpenOnceManager.Begin (обратный вызов AsyncCallback, состояние объекта, Func3 beginOperation, Action1 endOperation. BeginSendEventData (TrackingContext trackingContext, IEnumerable1 eventDatas, тайм-аут TimeSpan, обратный вызов AsyncCallback, состояние объекта) в Microsoft.ServiceBus.Messaging.EventHubSender.> C__DisplayClass23_0.b__0 (AsyncCallback ‹‹MesplayClass23_0. beginMethod, Func2 endFunction, Action1 endAction, Состояние объекта, TaskCreationOptions creationOptions) в Microsoft.ServiceBus.Common.Parallel.TaskHelpers.CreateTask (Func3 begin, Action`1 end, Object state) --- Конец трассировки стека из предыдущего места, где исключение был брошен --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача задачи) в System.Runtime.Comp ilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача задачи) в System.Runtime.CompilerServices.TaskAwaiter.GetResult () Дата: 4/12/2017 2:48:17 AM

Код: EventHubClient deveventHubClient = EventHubClient.CreateFromConnectionString (connectionString, «EventHubName»);

private async Task SendInBatch(IList<byte[]> source, Guid UUID)
{
List events = new List(source.Select(b => new EventData(b)));

    EventHubSender Partition0;
    EventHubSender Partition1;
    Partition0 = deveventHubClient.CreatePartitionedSender("0");
    Partition1 = deveventHubClient.CreatePartitionedSender("1");
    if (UUID.GetHashCode() % 2 == 0)
    {
        await Partition0.SendBatchAsync(events);
    }
    else
    {
        await Partition1.SendBatchAsync(events);
    }
    return Unit.Default;
}

person Radhika Bhala    schedule 12.04.2017    source источник
comment
Эта проблема появляется каждое утро? Вы пытаетесь использовать другой концентратор событий, чтобы проверить, появляется ли такая же проблема?   -  person Fei Han    schedule 13.04.2017
comment
Я попробовал 2 хаба событий, за ночь 1 потерпел неудачу в ~ 2:40 утра, а другой в ~ 4:30 утра., И это происходит постоянно каждый день.   -  person Radhika Bhala    schedule 13.04.2017


Ответы (1)


person    schedule
comment
Это имеет смысл, но у меня есть требование, при чтении из eventhub мне нужно усреднить данные за минуту, которые поступают из 1 UUID. Если я использую EventHubClient вместо определенного раздела для отправки данных на UUID, я получаю 2 средних значения в минуту (каждый из двух моих разделов) вместо 1. Чтобы избежать такой ситуации, я отправил данные 1 UUID через 1 раздел только с использованием логики% 2. - person Radhika Bhala; 13.04.2017
comment
Для чтения из eventhub я использую IEventProcessor, а в методе OpenAsync я усредняю ​​как: stream.GroupBy (item = ›item.PartitionKey) .Subscribe (group =› group .Buffer (TimeSpan.FromMinutes (1)). Subscribe (buffer) = ›{Aggregation.Aggregate (буфер); - person Radhika Bhala; 13.04.2017
comment
Как только вы получите 2 значения - как насчет того, чтобы получить средн. из этого средн.? В общем, я бы не рекомендовал отправлять в определенный раздел, если вы чувствительны к отправке ошибок и задержек. Проверенный способ - отправить как можно быстрее - и решить проблему (агрегации) ниже по потоку. - person Sreeram Garlapati; 13.04.2017
comment
Как вы рекомендуете рассчитать среднее значение этих двух значений? поскольку весь класс, реализованный из IEventProcessor, запускается дважды (один раз для каждого раздела) - person Radhika Bhala; 16.05.2017
comment
У меня нет контекста end2end для проблемы, которую вы пытаетесь решить здесь. Поскольку ваш вопрос касался - надежности отправки - я пытаюсь посоветовать, как этого можно достичь. Idea1: для нисходящего потока EventProcessorImpl - создайте экземпляр Singleton для AverageCalculator и вызовите этот класс в EventProcessorImpl.onProcessEvents. Обработка агрегированных средних значений в классе AverageCalculator. Идея 2: создать промежуточное событие с меткой времени из ваших потоков и присоединиться к обоим потокам Partition1 и Partition2. - person Sreeram Garlapati; 16.05.2017
comment
комментарий продолжение ... Некоторые из наших клиентов требуют - очень высокую надежность отправки и очень низкую задержку отправки (отправка с точностью до 10 миллисекунд) - например - если кто-то использует EventHubs для отслеживания / мониторинга активности своих пользователей - и завершение пользовательского запроса к своему веб-серверу только после получения обратно ACK для их отправки в EventHubs - их устойчивость к ошибкам отправки очень низкая. Если вы попали в это ведро - отправка в определенный раздел EventHub только усугубит ситуацию - и вам следует рассмотреть этот подход - перенос проблемы на подчиненное приложение ... - person Sreeram Garlapati; 16.05.2017
comment
Спасибо. Я использовал одноэлементный метод. - person Radhika Bhala; 07.06.2017