Оченные очереди брокеров сообщения и MessageType
-
30-09-2019 - |
Вопрос
Какова стандартная мудрость и соображения для разделения очереди сообщений?
Предполагая относительно небольшое количество сообщений (<1000 / день), имеет ли смысл объединить несколько типов сообщений в одну очередь и у потребителей используют селекторы для их фильтрации? Или, если одна очередь обрабатывает только один тип сообщения?
Пару возможных соображений я могу думать о:
- По крайней мере, в моих ограниченных знаниях ActiveMQ, похоже, что безопасность чтения / записи является в очереди. Таким образом, типы сообщений, которые нуждаются в разных разрешениях чтения / записи, нуждаются в разных очередях.
- Селекторы сообщений, похоже, понадобится стандартное значение заголовка (MessageType: ABCMessage) для фильтрации
- Взрыв очередей (> 10,> 100,> 1000?), Кажется, влияет на производительность больше, чем взрыва сообщений
- Тип единственного сообщения на очередь, кажется, проще написать код клиента для. Просто обрабатывать каждое сообщение в очереди. Если вы хотите другой тип сообщения, подпишитесь на другую очередь.
- ???
Решение
Любая заданная система MQ должна иметь возможность обрабатывать много миллионов сообщений в любой заданной очереди, я бы вообще не был обеспокоен в Voume.
Я предпочитаю очереди, которые имеют отличное реальное значение, а не беспокоиться о селекторах. Я знаю, что есть реальные причины для использования селекторов или потреблять и повторной очереди, но я предпочитаю сделать очереди различны и не беспокоиться о выборе.
Другие советы
Поскольку это не было действительно адресовано, и вы спрашивали об этом в вашем вопросе (и это было то, что я искал, когда нашла это), я подумал, что смогу уверен на том, как я могу отфильтровать сообщения на одной гетерогенной очереди. по типу.
Если вы посмотрите здесь, вы найдете пользовательское свойство доступно во всех сообщениях JMSType
. Отказ Это String
и по умолчанию пуст. Когда вы отправляете сообщения, установите свой продюсер к согласованному значению, например map
или text
Например, а затем, в вашем потребителе, используйте конкретный селектор сообщений в зависимости от того, какое сообщение вы хотите получить. Используя те же примеры, это было бы JMSType = 'map'
или JMSType = 'text'
.
Я смог успешно использовать эту технику с производителем Java и C ++, используя ActiveMQ-CPP. библиотека.