Implementar um Sistema de Gerenciamento e Utilização de Comunicação por Mensagens.
Deve ser implementado um servidor (sockets ou RMI/RPC) para gerenciar o Broker, com as seguintes funcionalidades:
- Adicionar e remover filas e tópicos ✔️
- Listas quantidade de mensagens nas filas ⏳ 🐛
- Instanciar novos usuários (verificar duplicidade de nomes) ✔️
- Criar automaticamente uma fila para cada usuário novo criado ✔️
Os usuários, por sua vez, devem implementar as seguintes funcionalidades:
- Permitir assinar tópicos ✔️
- Enviar mensagens entre usuários diretamente online ✔️
- Enviar mensagens entre usuários diretamente offline ⏳ 🐛
- Enviar mensagens para tópicos ⏳ 🐛
- Para começar, precisamos subir o serviço do RabbitMQ. Para isso, execute o seguinte comando (caso você tenha o docker instalado em sua máquina):
docker run --rm -p 5672:5672 -p 8080:15672 rabbitmq:3-management
obs.: caso você não tenho o Docker instalado, instale-o ou siga as instruções do site ofical do RabbitMQ
Após subir o serviço, acesse http://localhost:8080
com usuario e senha guest
para acessar o gerenciador diretamente do browser.
-
Você deve subir o servidor de nomes, para que possamos registrar o servidor do chat e possibilitar o seu acesso remoto. Para isso, abra um terminal e execute o comando abaixo:
pyro4-ns
-
Para registra o servidor no servidor de nomes, abra um outro terminal e execute:
python servidor_rmi.py
-
Agora para iniciar a interface de gerenciamento do servidor, abra um novo terminal e execute:
python servidor.py
-
Tamo chegando lá, calma kkk. Para executar a interface do usuário, abra um novo terminal para cada novo usuário que você queira utilizar e execute o comando abaixo:
python usuario.py
Ufa, acho que agora podemos bater um papo em paz. Aproveitem xD
- Na primeira vez que fui executar o hello world do rabbitmq, tive que utilizar o comando abaixo:
sudo apt-get install rabbitmq-server
Após isso, foi possível enviar a mensagem para o broker.
-
Caso dê problema com a porta usada pelo rabbitmq, acesse esse link
-
Não consegui utilizar uma função no servidor_rmi para escutar as filas. A solução que achei foi deixar essa parte no próprio usuário 😔
- Deixar as interfaces do servidor e do cliente mais amigáveis/bonitas
- Enviar de forma correta as mensagens para todos que assinam um tópico
- Colocar a informação da quantidade de mensagens em cada fila na interface do servidor (existe uma função que busca essa informação mas não está sendo utilizada na GUI)
- Permitir a comunicação entre usuários que estejam offline