Обновление :
Если вы используете Microsoft.Azure.EventHubs 2.0.0 NuGet
, а размер сообщения превышает 256 КБ, вы должны увидеть это сообщение об ошибке:
System.ArgumentException: 'There are no event data supplied. Please make sure input events are not empty.
Parameter name: eventDatas'.
если вы явно не указали максимальный размер (он может составлять до 1М), то максимальный размер по умолчанию равен 256 КБ.
Метод _currentBatch.TryAdd(data
) проверит размер, если он превышает максимальныйразмер вы установили.Если он превышает максимальный размер, возвращает false, а если возвращает false, метод SendAsync()
сгенерирует исключение;иначе возвращаем true.
Вы можете явно установить максимальный размер (он может достигать 1M), используя следующий код:
BatchOptions bo = new BatchOptions() { MaxMessageSize = 1048576 };
_currentBatch = eventHubClient.CreateBatch(bo);
Пример кода в виде удара, данные для отправкиболее 256 КБ и менее 1 МБ:
private static async Task SendTest()
{
var connectionStringBuilder = new EventHubsConnectionStringBuilder(EventHubConnectionString)
{
EntityPath = EventHubName
};
eventHubClient = EventHubClient.CreateFromConnectionString(connectionStringBuilder.ToString());
EventDataBatch _currentBatch;
BatchOptions bo = new BatchOptions() { MaxMessageSize = 1048576 }; // the max size can be 1M
_currentBatch = eventHubClient.CreateBatch(bo);
StreamReader sr = new StreamReader(@"D:\azure stack overflow\2019\04\18\test1.txt");
string s = sr.ReadToEnd();
Console.WriteLine(s.Length);
var data = new EventData(Encoding.UTF8.GetBytes(s));
if (_currentBatch.TryAdd(data))
{
Console.WriteLine("data has been added successfully!!!");
//return;
}
else
{
Console.WriteLine("no data added,the data is too larger!!!");
}
await eventHubClient.SendAsync(_currentBatch);
}
И работает без исключений:
Исключение«MessageSizeExceededException
» выбрасывается из-за этого:
Брошено, если общий сериализованный размер eventDataList превышает допустимый предел размера для одной передачи события (256 КБ по умолчанию).
Пожалуйста, убедитесь, чторазмер не более 256 тыс.
Более подробную информацию можно найти в документе здесь .