Является ли приоритет сообщения изначально неважным в системах очередей сообщений?

Похоже, что большинство систем обмена сообщениями, которые я рассматривал, имеют базовую поддержку очередей сообщений с приоритетом, если таковая имеется. Например, AMQP указывает только минимум 2 приоритета. RabbitMQ, реализация AMQP, не поддерживает никаких приоритетов. Через пару дней ActiveMQ получит поддержку для 10 приоритетов сообщений в версии 5.4. 10 уровней приоритета задаются JMS. спец..

очередь с приоритетом в смысле слова, не связанного с обменом сообщениями, упорядочивает свое содержимое на основе произвольного поля с неограниченный диапазон приоритетов. Почему такая реализация не существует как часть системы обмена сообщениями? Как я уже говорил в заголовке, является ли приоритет концепцией, не связанной с обменом сообщениями?

Я понимаю, что одним из ответов может быть то, что концепция приоритета вводит возможность того, что сообщения бесконечно томятся в очереди, пока обрабатываются сообщения с более высоким приоритетом. Есть ли другие причины?


person Edward Dale    schedule 12.08.2010    source источник
comment
Пара комментариев: это может лучше подойти для CSTheory.SE, я думаю, что вы решили проблему приоритета в своем посте. У вас должен быть способ предотвратить взаимоблокировку или томление... Я склонен думать, что очередь сообщений предназначена для пересылки сообщений, а не для того, чтобы нести ответственность за какую-либо основную бизнес-логику.   -  person jcolebrand    schedule 03.12.2010


Ответы (5)


Как правило, системы очередей сообщений используются для обеспечения доставки сообщений между разрозненными системами.

Обычно существует своего рода одноразовая гарантия, а часто и дополнительное обещание, что сообщения будут приходить по порядку.

По большому счету, это затем влияет на дизайн системы (систем), которую вы создаете и соединяете вместе.

Концепции приоритета между несвязанными системами часто не имеют особого смысла.

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

person sdg    schedule 17.12.2010
comment
Спасибо за ответ. Я тоже так чувствую. Мое первоначальное чувство недовольства связано с тем фактом, что я пытался реализовать систему очередей заданий с очередью сообщений, что, как я теперь понимаю, было неправильным. - person Edward Dale; 18.12.2010

Кстати, ActiveMQ теперь поддерживает приоритет обмен сообщениями в 5.4.x через заголовки JMSPriority.

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

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

person James Strachan    schedule 09.02.2011

Мне кажется, что идея, вероятно, больше похожа на «приоритет процесса», чем на значения приоритета в очереди приоритетов. Конечно, это согласуется с парой предложений об этом в спецификации JMS и, очевидно, также со спецификацией AMQP.

person SamB    schedule 04.12.2010

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

person user541169    schedule 17.12.2010

Системы обмена сообщениями разработаны и оптимизированы для хронологического упорядочения. Файловые системы оптимизированы для добавления файлов, а не для вставки данных в начало или в середину. Структуры данных, подобные очередям, обычно оптимизированы для добавления в конец и удаления из головы. Для файловых систем это означает добавление к файлу (добавление) и добавление к журналу транзакций (удаление), а также удаление файлов сообщений после их использования (удаление).

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

person user2687644    schedule 09.03.2018