Мы используем метод SendBatch() сервисной шины Azure SDK 3.1.7 для отправки данных в концентратор событий Azure. Ниже приводится фрагмент кода:Превышает предел (262144 байт), который в настоящее время разрешен по ссылке Исключение в методе SendBatch() служебной шины Azure
foreach (var packet in transformedPackets)
{
EventData eventData = new EventData(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(packet, settings)));;
try
{
eventData.Properties.Add(AppConstants.TenantDeploymentUniqueIdKey, tenantDeploymentUniqueId);
eventData.Properties.Add(AppConstants.DataTypeKey, DataTypeKey);
byteCount += eventData.SerializedSizeInBytes;
if (byteCount > MaxBatchSize)
{
sender.SendBatch(transformedMessages);
transformedMessages.Clear();
byteCount = eventData.SerializedSizeInBytes;
}
transformedMessages.Add(eventData);
}
catch (System.Exception)
{
eventData.Dispose();
throw;
}
}
Event после проверки свойства SerializedSizeInBytes перед добавлением данных о событиях в шихту (Максимально допустимый предел: 256 Кб), мы получаем следующее исключение:
Полученное сообщение (идентификатор доставки: 0, размер: 262279 байт) превышает предел (262144 байт), который в настоящее время разрешен по ссылке. в Microsoft.ServiceBus.Common.ExceptionDispatcher.Throw (исключение) Исключение в Microsoft.ServiceBus.Common.AsyncResult.End [TAsyncResult] (IAsyncResult результат) на Microsoft.ServiceBus.Common.AsyncResult 1.End(IAsyncResult asyncResult) at Microsoft.ServiceBus.Messaging.MessageSender.RetrySenderEventDataAsyncResult.End(IAsyncResult r) at Microsoft.ServiceBus.Messaging.MessageSender.EndSendEventData(IAsyncResult result) at Microsoft.ServiceBus.Messaging.EventHubSender.SendBatch(IEnumerable
1 eventDataList)