2 ответа

Лучший ответ

Метод client.receive() возвращает объект RecieverHandler, который можно использовать для остановки потока с помощью его метода stop(). Затем вы должны запустить его снова, используя новый client.receive().

Другой вариант - использовать client.recieveBatch(), где максимальный размер пакета равен 1.

Ни один из вариантов не идеален - как сказал Питер Бонс, концентраторы событий не предназначены для медленного потока данных. Сервис предполагает, что вы сможете принимать сообщения с той же скоростью, с которой они приходили, и что у вас будет только 1 получатель на каждый раздел. Служебная шина действительно является хорошей альтернативой. Вы можете выбрать, сколько сообщений получать за раз, и подключить несколько получателей, каждый из которых обрабатывает одно сообщение за раз, чтобы масштабировать ваше решение.

1
SamaraSoucy 4 Апр 2019 в 21:26

Вы описываете необходимость противодействия, и последняя версия пакета @azure/event-hubs действительно решила эту проблему. Это гарантирует получение событий только после обработки ранее полученных событий. По умолчанию вы будете получать события пакетами размером 10, и этот размер можно настроить.

См. руководство по миграции. с v2 на v5, если вам нужно обновить текущее приложение, чтобы использовать последнюю версию пакета.

1
Ramya Rao 10 Июн 2020 в 01:25