Проверьте, удалено ли сообщение из очереди Azure. - PullRequest
0 голосов
/ 31 мая 2018

У меня есть процессор, который принимает сообщения из очереди хранения.Это сообщение имеет некоторый тайм-аут видимости.Но иногда процессор занимает больше времени, чем тайм-аут, поэтому другой экземпляр процессора снова обрабатывает сообщение (во второй раз невозможно пройти через весь поток в процессоре, так как у меня есть некоторая проверка).Во второй раз сообщение обрабатывается быстрее, чем и становится удаленным, прежде чем весь поток будет завершен в первый раз.

Но когда поток завершается, он также хочет удалить уже удаленное сообщение.В результате я получаю сообщение об ошибке:

Message = "Невозможно перевести байты [92] с индексом -1 из указанной кодовой страницы в Unicode.

Можно ли проверитьесли сообщение удалено, прежде чем пытаться удалить его во второй раз?

1 Ответ

0 голосов
/ 31 мая 2018

Первое, что нужно попробовать, - это сделать тайм-аут видимости достаточно длинным, чтобы вы могли быть уверены, что обработка завершится до истечения времени ожидания.

Если это не вариант или если вам нужна дополнительная безопасность, выможно использовать CloudQueue.UpdateMessage() для увеличения времени ожидания видимости сообщения.

https://docs.microsoft.com/en-us/dotnet/api/microsoft.windowsazure.storage.queue.cloudqueue.updatemessageasync?view=azure-dotnet

...