По-видимому (на основе исключения) EventHubClient.SendBatch и EventHubClient.SendBatchAsync поддерживают только отправку в один раздел за операцию. Это, как представляется, указано в документации по сводке методов «Отправляет пакет данных событий в логический раздел, представленный PartitionId», который, как представляется, копируется из определенного раздела EventHubSender.SendBatch.Почему EventHubClient.SendBatch() поддерживает только один раздел?
Существуют ли конструктивные соображения (вместо того, чтобы писать меньше кода), если клиент более высокого уровня не будет перенаправлен по мере необходимости? EventHubClient имеет контроль над хэшированием/распределением ключа раздела, который недоступен для вызывающих пользователей EventHubClient, которые хотят отправить пакет данных с разными ключами, которые могут находиться на одном разделе. Чтобы переустановить себя, мне нужно совершать вызовы по порядку количества сообщений, а не по числу разделов, которые с небольшими сообщениями легко различаются на два порядка.
Так как это already необходимо переустановить, это может быть хуже.
Да, этот код похож на то, что я написал (а не доля) в результате http://stackoverflow.com/questions/27263189/how-can-the-serial-size-of-eventdata-be-defined-for-batching, хотя впоследствии был добавлен SerializedSize в байтах. Он, по крайней мере, явно указывает, что пакетная обработка поддерживает EventData только с тем же ключом раздела. – cacsar