Чтение сообщения в очереди хранилища Azure несколько раз

Контекст: у меня есть очередь хранилища Azure, которая используется в качестве входной очереди для функции запуска очереди. Итак, всякий раз, когда сообщение добавляется в очередь, срабатывает некоторая функция X и начинает работать. Я хочу проверить, что сообщение было успешно помещено в очередь и использовано. Как я могу сделать это только из очереди (при условии, что у меня нет видимости моей функции X, и я не могу изменить настройки для функции запуска очереди)? Чтобы еще больше разобрать этот вопрос:

  • После того, как функция запуска очереди исключит сообщение из очереди, будет ли оно по-прежнему доступно для чтения во время тестирования? Если да, как я могу получить к нему доступ?
  • Поскольку здесь есть состояние гонки, если я исключу сообщение из очереди при тестировании до того, как это сделает функция триггера очереди, как это повлияет на работу триггера очереди? Можно ли исключить сообщение из очереди при тестировании, но в то же время доступно ли оно для Queue Trigger, чтобы исключить его из очереди и запустить мою функцию X без каких-либо помех?
  • В итоге у меня есть сообщение очереди в очереди хранилища Azure, которое я хочу дважды прочитать из двух разных источников, без помех между двумя операциями. Возможно ли это и поддерживается ли это? Если да, то как я могу это сделать?

Спасибо!


person J.B    schedule 09.10.2018    source источник


Ответы (1)


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

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

person MarkXA    schedule 09.10.2018
comment
Итак, вы говорите, что это возможно, если мы дойдем до сообщения до триггера очереди, но невозможно, если триггер очереди доберется до него первым. я правильно понимаю? - person J.B; 10.10.2018
comment
Да, как только триггер очереди получит сообщение, другие процессы не смогут его увидеть. Однако процесс, использующий peek, оставит сообщения неизменными и по-прежнему видимыми. - person MarkXA; 11.10.2018