Поэтому, если я правильно понимаю ваши вопросы и комментарии, вы пытаетесь сделать что-то вроде этого:
- Входящие сообщения входят либо в стандартную, либо в приоритетную тему.
- Некоторые процессы проверяют сообщения в стандартной теме и «перемещают» их в приоритетную тему на основе некоторых критериев, удаляя их из стандартной темы и добавляя их в приоритетную тему.
- Сообщенияобрабатывается как обычно.
Как отметил Шон, шаг 2 просто не будет работать.Служебная шина - это система «первым пришел - первым вышел», где потребитель просто получает следующее доступное сообщение.Вы можете отсортировать очередь, извлекая все сообщения и оставляя / заполняя их на основе определенных критериев, но проблема заключается в масштабировании.Кроме того, вы можете думать о каждой подписке на тему как о своей отдельной очереди - удаление формы сообщения из одной подписки не удаляет ее из других подписок.
То, что я бы предложил вместо того, чтобы пытаться вытянуть всеиз тем, а затем возвращая те, которые вы хотите сохранить, добавьте очередь сортировки перед двумя темами.Если вам не нужно сортировать сообщения с высоким приоритетом, вы можете поставить этот процесс сортировки только перед темой со стандартным приоритетом.
Вот как этот процесс будет работать:
- Входящие сообщения добавляются в очередь сортировки. Обратите внимание, что это отдельная очередь, а не тема.На этом этапе процесса мы хотим убедиться, что имеется только одна копия каждого сообщения.
- Процесс сортировки перемещает сообщения из очереди сортировки в стандартную или приоритетную очередь, в зависимости от ситуации.Используя что-то вроде функций Azure, вы можете довольно легко масштабировать этот процесс.
- Сообщения обрабатываются из тем в обычном режиме.