У меня есть TimerTrigger
Функция Azure, которая срабатывает каждую минуту. Когда он срабатывает, я читаю определенное количество сообщений из своей очереди с помощью этого кода:
cloudQueue.GetMessagesAsync(32);
И когда я закончу с этим, я вижу, что сообщение снова становится видимым в очереди, хотя функция НЕ обнаружила никаких ошибок.
Я просмотрел эти ответы, но все они говорят, что если у вас нет ошибок в вашей функции во время выполнения, сообщения следует удалять из очереди:
Хранилище очередей Azure запущено без удаления сообщения
Функция Azure и очередь хранилища, что делать, если функция не работает
Но мои сообщения не удаляются.
Вот мой код функции:
[FunctionName("MyFunctionName")]
public static async Task SchedulerFunction([TimerTrigger("0 */1 * * * *", RunOnStartup = false)]TimerInfo myTimer, [Queue("my-queue-name", Connection = "AzureWebJobsStorage")]CloudQueue cloudQueue)
{
var messages = await cloudQueue.GetMessagesAsync(32);
await ProcessSomethingOnMessagesWithoutAnyErrors(messages);
}
Что мне нужно, так это удалить собранные сообщения из очереди после того, как я получил их cloudQueue.GetMessagesAsync(32);
, и если он не удастся 3 раза, переместить их в my-queue-name-poison
очередь. Если мне нужно использовать какой-либо конкретный RetryPolicy
, не стесняйтесь рекомендовать его.