Я использую EventHub -> Функция Azure -> Azure SqlDatabase.
В EventHub 32 раздела и включено масштабирование до 20.Функция есть и всегда будет единственной, использующей концентратор событий в приложении Function.Поэтому я полагаю, что при этом я получаю максимальную доступность и пропускную способность, когда это необходимо.
Теперь представьте сценарий, в котором большое количество пакетов отправляется в EventHub, но что-то не так в сообщениях, из-за чего функцияне работает должным образом, и база данных полна SQL-ошибок.
Итак, как мне исправить ошибку?
- У меня есть EventHub, заполненный 'trash».
- У меня есть функция, вызываемая «безумно» и тратящая деньги на попытки обработки плохих сообщений.
- У меня есть БД, выдающая сотни исключений, потребляющая 100% ЦП и даже не отвечающая на sp_who [...]
- И у меня растет PoisonHub.
[Я не хочу, чтобы все эти сообщения собирались в EventHub]
Как начать?
- Запретить EventHub получать новые сообщения, пока отправитель не будет зафиксирован
- Остановить функцию, чтобы я не потреблялэти сообщения
- Может быть, масштабировать БД, чтобы она отвечала, и я могу убить некоторые процессы.
Хорошо, но теперь у меня остановлена вся структура, что уже ужасно, иEventHub полон мусора, который будет выставлять счета за ненужные байты.
Некоторые из «решений», которые я видел вокруг:
- Создайте новый EventHub, которыйочень странное «решение»;
- Разверните пустую функцию Azure доИзвлеките корзину и обновите контрольную точку Eventhub;
- Вручную измените смещение хранилища для всех 32 разделов.
- Просто исправьте отправителя EvenHub и отпустите его ...
Ну, я не удовлетворен этим.Есть ли лучший способ справиться с этим?