Roteamento de Mensagens Para Grupos de Processos

Pessoal, estou precisando desenvolver uma aplicação que consiste em um chat multiusuário. Quando um usuário se conecta ao servidor, ele vai poder escolher para quais usuários a mensagem que ele digitar vai ser enviada. Estava pensando em criar um registro no servidor com os usuários conectados a ele, e em cada cliente um registro parecido contendo os clientes ao qual ele deve enviar as mensagens. Dessa maneira, quando o cliente enviar a mensagem, o servidor vai consultar o registro do cliente para saber para quais clientes essa mensagem deve ser roteada, e assim enviá-las para todos.
Só que achei que vai consumir muitos recursos e tal, acho que deve existir outra maneira mais fácil e mais “automática” em Java. Alguém ae poderia me dar algumas dicas, uma luz? Preciso disso o quanto antes, então quem puder me ajudar, sou muito grato desde já.

Ps:. pensei em usar multicast, só que imagino na situação em que um usuário pode estar conectado a vários outros. Ele devá então receber mensagens de qualquer um deles, sendo necessário assim fazer uma conexão com cada endereço multicast de cada cliente.