Este projeto consiste no desenvolvimento de um sistema de Bolsa de Valores utilizando RabbitMQ para a comunicação entre a Bolsa de Valores e Brokers. O sistema permite que Brokers enviem operações de compra ou venda à Bolsa de Valores, que gerencia o livro de ofertas e encaminha as operações aos Brokers interessados.
O trabalho é dividido em duas partes: uma para a Bolsa de Valores e outra para o Broker. Ambos se comunicam através de RabbitMQ utilizando filas de mensagens e tópicos.
Os requisitos do trabalho são:
-
Configuração do RabbitMQ: Utilize um servidor RabbitMQ configurado na nuvem, como uma máquina gratuita do tipo Little Lemur - For Development do site https://www.cloudamqp.com/.
-
Comunicação entre Broker e Bolsa de Valores: A bolsa de valores deve ter um canal pub/sub usando tópicos para publicar atualizações no livro de ofertas e operações realizadas em uma ação. O canal deve se chamar
BOLSADEVALORES. -
Filas de Mensagens:
- A fila
BROKERé usada para receber operações dos Brokers. - A fila
BOLSADEVALORESé usada para notificar os Brokers das operações.
- A fila
-
Threads em Java: Utilize threads para implementar a lógica do sistema.
-
Servidores diferentes: O servidor do sistema deve ser disponibilizado em uma máquina diferente de localhost.
-
Bolsa de Valores: A parte da Bolsa de Valores gerencia as operações recebidas dos Brokers, armazena no livro de ofertas e publica atualizações e transações realizadas em tópicos RabbitMQ.
-
Broker: Os Brokers enviam operações à Bolsa de Valores usando a fila
BOLSADEVALORESe assinam tópicos para receber notificações sobre operações em que estão interessados através da filaBROKER. -
Livro de Ofertas: O Livro de Ofertas armazena ordens de compra e venda, permitindo que a Bolsa de Valores gerencie e execute transações.
-
Filas:
BOLSADEVALORES: Fila onde a bolsa recebe operações de compra e venda dos Brokers.BROKER: Fila onde a bolsa enviar atualizações sobre operações aos Brokers.
-
Tópicos:
compra.ativo: Tópico de ordens de compra de um ativo específico.venda.ativo: Tópico de ordens de venda de um ativo específico.
- Java Development Kit: Versão 8 ou superior.
- RabbitMQ: Um servidor RabbitMQ configurado na nuvem, conforme especificado nos requisitos.
-
Configurar o RabbitMQ: Obtenha as credenciais e configurações do servidor RabbitMQ.
-
Compilar o projeto: Execute o script
compile.shna raiz do projeto para compilar os arquivos Java../scripts/compile.sh
-
Executar a Bolsa de Valores: Em um terminal, execute o aplicativo da Bolsa de Valores usando o script
run.shcom o argumentoAppBolsaDeValores../scripts/run.sh AppBolsaDeValores
-
Executar o Broker: Em um segundo terminal, execute o aplicativo do Broker usando o script
run.shcom o argumentoAppBroker../scripts/run.sh AppBroker
-
Monitorar a execução: Monitore os terminais para observar o funcionamento do sistema.