Как получить PartitionId в событии, запущенном функцией Azure? - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть функция 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 для каждого обработанного сообщения?

1 Ответ

2 голосов
/ 10 апреля 2019

Определите триггер EventHub , включив в него метаданные события .Затем используйте receiveRuntimeInfo для объекта контекста.

PartitionContext.RuntimeInfo.PartitionId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...