Я хочу реализовать приоритетную рабочую очередь, в которой приоритет группы сообщений может измениться, как только они окажутся в очереди.Поскольку это рабочая очередь с переменным временем обработки, сообщения не назначаются с использованием алгоритма циклического перебора, а извлекаются из очереди, когда ресурс свободен (с использованием предела для каждого потребителя).
Я пришелс двумя вариантами реализации:
- Использовать очередь приоритетов от RabbitMQ, а когда приходит запрос на изменение приоритета, читать сообщения с этим приоритетом из очереди и повторно отправлять их с другим приоритетом.(Я не уверен, что это хороший подход, учитывая сложность O (n).)
- Используйте несколько очередей с разными именами для каждой группы сообщений и используйте отдельную очередь для передачи текущего списка приоритетов (упорядоченный список имен очередей) работникам.(Используя этот подход, я не уверен, как сделать список приоритетов «постоянным», чтобы вновь присоединенный работник знал, каков текущий список приоритетов.)
Как бы вы его реализовали?Является ли RabbitMQ приемлемым вариантом для этого варианта использования?