У меня есть тема служебной шины, в которую отправлено 400 000 сообщений из функции Azure. У меня есть вторая функция Azure, которая получает сообщения в качестве триггера. Когда вторая функция была запущена, она успешно обработала 98% сообщений. У меня осталось примерно 8000 сообщений, которые не удалось. Либо из-за исключения, либо из моего кода сообщение было оставлено. У меня сейчас 8000 сообщений, находящихся в подписчике темы, и я не могу заставить функцию повторить попытку обработки.
Первоначально подписчик был настроен так, чтобы разрешить только 1 доставку сообщения. Я сделал это таким образом, потому что во время отладки я видел, как одно и то же сообщение обрабатывалось несколько раз. Я не был уверен, было ли это побочным эффектом отладки в Visual Studio локально, или сообщения будут отправляться в функцию несколько раз. Я предполагаю, что это то, что привело к тому, что в этих сообщениях функция не запускалась повторно после того, как они были заброшены (если это даже поддерживается?).
Я изменил счетчик доставки подписчикам на 5, надеясь, что он повторно доставит сообщение функции. Это не так. Что мне нужно сделать сейчас, чтобы получить оставшиеся 8000 сообщений для повторного запуска второй функции?
В худшем случае я могу удалить подписку, воссоздать подписку и снова запустить первую функцию, которая должна просто опубликовать данные, связанные с исходными отсутствующими 8000 сообщений (у меня есть логика для обработки недостающих данных в 1-й функции). Это приведет к повторному срабатыванию второй функции. Я хотел бы выяснить, как с этим справиться, когда в подписке есть такие потерянные сообщения, поскольку я испытаю это, когда продвинусь в производство. Я хочу, чтобы это было автоматизировано, и мне не приходилось заниматься очисткой вручную и повторным запуском процесса во второй раз.
Следующее показывает, что в теме не осталось сообщений, но они все еще существуют в подписке.
Я написал функции в C # Functions 1.0 на полной платформе.