Приоритет сообщения по своей сути не важен в системах очередей сообщений? - PullRequest
18 голосов
/ 12 августа 2010

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

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

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

Ответы [ 5 ]

7 голосов
/ 09 февраля 2011

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

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

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

5 голосов
/ 18 декабря 2010

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

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

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

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

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

1 голос
/ 18 декабря 2010

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

1 голос
/ 05 декабря 2010

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

0 голосов
/ 09 марта 2018

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

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

...