Денис Бондарь, спасибо за развёрнутый ответ, мне очень пригодится пример вашей реализации.
Но у вас клиент только принимает сообщения. Я бы хотел и отправлять. Скорее всего придется это делать Ajax'ом, т.к. не вижу как можно ограничить доступ клиента к обменникам
Денис Бондарь, как удалось решить основной вопрос с аутентификацией?
Я пишу чат с использованием того же стека. У меня все сообщения проходят через один обменник с типом topic. Есть постоянная очередь, в которую попадают все сообщения (оттуда они пишутся в Redis, а затем в СУБД). Очереди для каждой страницы создаются на клиенте.
Вот так выглядит подписка: