Я хочу написать клиентское приложение Java SE, которое взаимодействует с сервером Java. Представьте себе что-то похожее на онлайн-игру, в которой много трафика и потенциально несколько клиентов подключены к одному серверу.
- Постоянная связь между клиентом и сервером
- Связь будет не в порядке, вне полосы, поэтому ни один конец не знает и не ожидает, какое сообщение он может получить в следующий раз или когда.
- Сервер не знает IP-адрес клиента и не может установить связь с клиентом (поскольку в пути может быть NAT). Поэтому любые открытые порты должны быть инициированы со стороны клиента.
- Фактическая полезная нагрузка будет сериализована в байтах. Я намереваюсь использовать буфер протоколов для распределения сообщений в байтах по проводам, чтобы транспортный конверт тоже был легковесным.
- Клиент - это Java SE, но потенциально когда-нибудь это может быть C ++.
ActiveMQ, кажется, является подходящим выбором, но так как я никогда не использовал его таким образом, я не уверен, имеет ли он производительность или характеристики.
Может кто-нибудь посоветовать, если это подходит, с какими подводными камнями я могу столкнуться и, возможно, предложить учебник, демонстрирующий нечто похожее на то, что я рассматриваю?