Проверьте, удалено ли сообщение из очереди Azure

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

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

Message = "Unable to translate bytes [92] at index -1 from specified code page to Unicode.

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

Укажите, используете ли вы очередь хранилища Azure или очередь служебной шины Azure (я предполагаю, что вы используете очереди хранилища).

Gaurav Mantri 31.05.2018 19:29

@GauravMantri, ваша догадка верна

demo 01.06.2018 02:22
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
273
1

Ответы 1

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

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

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

Другие вопросы по теме