Как я могу получить состояние обработанных сообщений в служебной шине Azure?

#azure #azureservicebus

#azure #azureservicebus

Вопрос:

В нашем текущем приложении, которое мы переносим на Azure, мы используем таблицу SQL Server в качестве очереди. Приложению необходимо обрабатывать файлы, загруженные пользователями. Для каждой загрузки мы добавляем в таблицу строку, содержащую столбец состояния (новое, в процессе, успешно обработано, неудачная обработка) и идентификатор пользователя. Запрашивая эту таблицу, мы можем легко показать пользователю состояние каждого запроса. При переносе этого решения в Azure мы планируем использовать служебную шину Azure вместо таблицы очередей. Все запросы на загрузку файлов будут помещены в очередь и обработаны веб-заданием с использованием ServiceBusTrigger. Но мой вопрос: как мы можем запросить состояние всех сообщений для пользователя?

Из документации я понимаю, что мы можем запрашивать состояние сообщений, которые в данный момент находятся в очереди, и я могу использовать метаданные сообщения для фильтрации идентификатора пользователя, но как насчет сообщений, которые уже были обработаны?

Нужно ли мне поддерживать отдельную таблицу для записи состояния обработки исторических сообщений или ServiceBus предоставляет для этого какой-либо API?

Комментарии:

1. Вам нужно иметь состояние для каждого сообщения или вы представляете его на панели мониторинга (т.е.: количество обработанных сообщений, количество сообщений с ошибкой)?

2. Мне не нужна сводная статистика на уровне очереди для отображения на панели мониторинга. Мне нужно состояние отдельных сообщений. Сетка, которую я показываю каждому пользователю, содержит следующие столбцы — Дата запроса, Состояние запроса (т. Е. Находится ли он в процессе, успешно обработан или сбой). Надеюсь, это прояснит ситуацию..

3. Да, вам определенно необходимо сохранить эту информацию, поскольку вы не сможете получить ее из ASB.

4. Спасибо.. Тогда я сделаю то же самое.. Для этого не очень сложно создать отдельную таблицу, но это просто добавляет еще один компонент в архитектуру и еще одну точку отказа, поэтому я хотел быть уверенным, что ASB не имеет встроенной этой возможности. Еще раз спасибо за ваш ответ.