Меня интересуют технологии обмена сообщениями с открытым исходным кодом и / или распределенного кэша, которые удовлетворяют следующим требованиям:
- Несколько экземпляров веб-приложения Java с балансировкой нагрузки (возможно, в Amazon EC2)
- Возможно изменение количества экземпляров во времени для масштабирования.
- Когда запрос приходит с идентификатором FOO , событие кэшируется в памятина период времени.
- Продолжительность времени, в течение которого событие кэшируется, указывается в полезной нагрузке запроса и варьируется между запросами.
- Продолжительность относительно мала (порядка минут).
- Постоянство не требуется.В редких случаях, когда происходит что-то драматическое и сервер должен быть перезагружен, можно забыть о прошлых событиях.
- Информация о запросе должна распространяться на все экземпляры сервера.
- Распространение информации не должно существенно влиять на производительность серверов, и особенно задержки ответа.Он должен быть асинхронным при обработке запроса.Тем не менее, он должен быть достаточно быстрым и масштабироваться для большого количества запросов.
- Это нормально, если разные экземпляры сервера не синхронизированы.Т.е. допустимо, чтобы в течение некоторого короткого периода времени (порядка секунд) экземпляр сервера 2 не знал, что FOO происходил на экземпляре сервера 1, пока эта информация не была передана ему.
Любые идеи будут оценены.Если для каких-либо решений требуется особая конфигурация / настройка, чтобы соответствовать требованиям, пожалуйста, укажите, что мне нужно сделать.
РЕДАКТИРОВАТЬ Я не имею в виду, что текущие ответы неуместно, но я не был явно в моем вопросе.Пожалуйста, не просто указывайте на каждую библиотеку MQ и JSR-107 под солнцем.Мои требования удовлетворяют только те, кому есть основания полагать.