Не получает все посреднические сообщения от подписки на сервисную шину Azure
Я использую подписку на сервисный автобус Azure и Темы для отправки заказов и получения заказов. У нас есть приложение для Windows, которое извлекает заказы с использованием веб-API из подписки на сервисную шину Azure.
Предположим, если пользователь залогинился и получил 5 заказов. Если пользователь выходит из приложения Windows, мы разблокируем сообщения от служебной шины Azure. и если пользователь снова войдет в систему через 5 минут или меньше, мы не получим все заказы из сервисной шины Azure. Это прибывает как 3 или 4 иногда.
Может кто-нибудь помочь мне в этом вопросе, почему я не получаю все 5 заказов снова. Я использую метод рассылки ReceiveBatch для получения сообщений.
1 ответ
Я подозреваю, что вы столкнулись с проблемой подсчета доставки здесь. Предполагая, что я правильно понял, что вы говорите, приложение Windows извлекает сообщения в PeekLock
Режим. После обработки сообщения вы завершаете его. В противном случае при выходе из приложения вы отказываетесь от сообщений. Если вы не завершили обработку сообщений и пользователь завершил работу, сообщение будет оставлено, пока DeliveryCount
увеличена. однажды DeliveryCount
превышение максимального значения, установленного для объекта, сообщение является недействительным и больше не будет доставлено.
- Проверьте свои
MaxDeliveryCount
на объекте - Проверьте DLQ вашей сущности, чтобы убедиться, что это поведение
- В случае, если они DLQed, я предлагаю изучить централизацию ваших DLQ для облегчения обработки ошибок