Я поддерживаю ActiveMessaging и также думаю о проблемах многопоточного поллера, хотя, возможно, не в таком масштабе, как вы, ребята. Я поделюсь с вами своими мыслями здесь, но также буду рад обсудить дальнейший список активных сообщений или по электронной почте, если хотите.
Одна хитрость в том, что опросер не единственная сериализованная часть этого. Подписки на STOMP, если вы выполняете client -> ack во избежание потери сообщений при прерывании, будут отправлять новое сообщение по данному соединению только тогда, когда предыдущее сообщение было подтверждено. Как правило, вы можете обрабатывать только одно сообщение за одно соединение.
Таким образом, чтобы продолжать использовать брокера, уловка заключается в том, чтобы одновременно открывать много подключений / подписок брокера. Текущий опросчик довольно тяжел для этого, так как он загружает целую среду rails для каждого обработчика, и один опросчик - это одно соединение. Но в текущем устройстве опроса нет ничего магического, я мог бы представить, что приложение опроса является клиентом машины событий, который реализован для создания новых соединений с брокером и получения множества сообщений одновременно.
В своих собственных экспериментах в последнее время я думал об использовании Ruby Enterprise Edition и наличии главного потока, который разветвляет многие рабочие потоки-опрошенные, чтобы получить выгоду от уменьшения занимаемой памяти (так же, как это делает пассажир), но думаю трюк с ЭМ мог бы сработать.
Я также являюсь поклонником проекта Resque, хотя я не знаю, что было бы лучше масштабировать для многих рабочих - я думаю, что рабочие могли бы быть легче.
http://github.com/defunkt/resque