Примечание. У меня нет практического опыта настройки системы, которую вы описали в своем вопросе, поэтому следующие теоретические соображения следующие.
Одним из факторов является вопрос, что увидят ваши пользователи при следующем входе в систему:
- Все твиты, которые не были доставлены пользователю в его предыдущих сеансах. Или
- Все твиты, которые были опубликованы в предыдущие х часов.
Случай 1: JMS хорош, потому что очередь может запомнить, какие сообщения уже доставлены. Но подождите: это означает, что вам нужно иметь одну очередь на сообщение получатель .
Случай 2: Здесь вы можете по-настоящему работать с темами в сообщении отправитель , а также получать сообщения с истекшим сроком действия, превышающие x часов. Опять же, JMS может быть хорошим вариантом.
Производительность
Реализации JMS обычно могут хранить сообщения в памяти, и для доступа к сообщениям в очереди / теме вам не нужно искать в большом индексе - поэтому я предполагаю, что это должно быть быстрее, чем база данных, вероятно, все еще быстрее, чем база данных в памяти. В случае сбоя узла вы можете либо заново создать очереди из резервной базы данных, либо использовать high-Availability и Persistence , встроенные в некоторые реализации JMS.
Но я полностью согласен со skaffman: по сравнению с распределенным хранилищем данных в памяти, вы будете использовать больше памяти. Преимущество JMS заключается в том, что он упрощает автоматическое истечение срока действия сообщений (и некоторых других вещей), и я не знаю, будет ли хорошей идеей повторно реализовать эту функцию.
Так что, возможно, я бы просто сохранил идентификаторы в очередях и поместил фактические сообщения в кеш объекта Java. Таким образом, вам снова придется использовать индекс, но вы получаете удобство от JMS с большей эффективностью использования памяти кеша объектов. Когда кеш находится только на стороне отправителя, его даже не нужно распределять, предполагая, что все сообщения от одного отправителя находятся на одном (реплицированном) узле, но это зависит, вероятно, от множества других архитектурных решений.