Вопрос

Какова стандартная мудрость и соображения для разделения очереди сообщений?

Предполагая относительно небольшое количество сообщений (<1000 / день), имеет ли смысл объединить несколько типов сообщений в одну очередь и у потребителей используют селекторы для их фильтрации? Или, если одна очередь обрабатывает только один тип сообщения?

Пару возможных соображений я могу думать о:

  • По крайней мере, в моих ограниченных знаниях ActiveMQ, похоже, что безопасность чтения / записи является в очереди. Таким образом, типы сообщений, которые нуждаются в разных разрешениях чтения / записи, нуждаются в разных очередях.
  • Селекторы сообщений, похоже, понадобится стандартное значение заголовка (MessageType: ABCMessage) для фильтрации
  • Взрыв очередей (> 10,> 100,> 1000?), Кажется, влияет на производительность больше, чем взрыва сообщений
  • Тип единственного сообщения на очередь, кажется, проще написать код клиента для. Просто обрабатывать каждое сообщение в очереди. Если вы хотите другой тип сообщения, подпишитесь на другую очередь.
  • ???
Это было полезно?

Решение

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

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

Другие советы

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

Если вы посмотрите здесь, вы найдете пользовательское свойство доступно во всех сообщениях JMSType. Отказ Это String и по умолчанию пуст. Когда вы отправляете сообщения, установите свой продюсер к согласованному значению, например map или text Например, а затем, в вашем потребителе, используйте конкретный селектор сообщений в зависимости от того, какое сообщение вы хотите получить. Используя те же примеры, это было бы JMSType = 'map' или JMSType = 'text'.

Я смог успешно использовать эту технику с производителем Java и C ++, используя ActiveMQ-CPP. библиотека.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top