У меня есть функция Azure, запускаемая концентратором событий. Я настроил приложение функции в host.json с MaxBatchSize 32. Мой концентратор событий имеет 6 разделов, и я не хочу, чтобы событие обрабатывалось дважды.
Итак, мне нужен идентификатор раздела и порядковый номер, чтобы однозначно идентифицировать событие. Я хотел бы сохранить PartitionID и SequenceNumber в моей базе данных в качестве первичных ключей. Моя функция запускается при вводе с массивом EventData. Итерируя по массиву, я могу получить SequenceNumber для каждого сообщения, но я не знаю, как получить по PartitionID. Я пытался включить параметр типа PartitionContext среди входных параметров, но он не работает.
Вот мой код:
[FunctionName("EventHubTriggeredFunction")]
public static void Run([EventHubTrigger("events", Connection = "EventHubConnection")]EventData[] eventHubMessages, TraceWriter log)
{
foreach (var message in eventHubMessages)
{
using (Stream stream = message.GetBodyStream())
{
using (StreamReader reader = new StreamReader(stream))
{
try
{
//... do something
//SequenceNumber: message.SequenceNumber
Save(reader.ReadToEnd(), message);
//... do something else
}
}
}
}
Как я могу получить PartitionID для каждого обработанного сообщения?