Как выбрать тему против очереди - PullRequest
2 голосов
/ 02 марта 2012

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

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

Спасибо.
Rw

1 Ответ

2 голосов
/ 02 марта 2012

Это не совсем так, если только один потребитель использует очередь.

У нас есть приложение Java EE, в котором мы оцениваем страховые котировки.У нас есть очередь RatingIn и очередь RatingOut.Все наши клиенты пишут в очередь RatingInto и читают из очереди RatingOut.И у нас, вероятно, около 300+ клиентов.

Хитрость в том, что несколько клиентов обращаются к одной и той же очереди для чтения, используя correlationID в заголовках сообщений.Сделайте это уникальным для клиента, и он получит только свое уникальное сообщение.То, что мы делаем, - устанавливаем этот корреляционный идентификатор в клиенте для сообщения, привязанного к рейтингу.Затем сервер выбирает свойство и записывает в сообщение, что оно записывает обратно в RatingOut.Это сохраняет уникальные сообщения для уникальных клиентов, но без необходимости в 300+ очередях (которые быстро станут неуправляемыми в нашей компании, учитывая количество администраторов сервера приложений).

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

...