Sistema distribuído onde:
- Pacientes (Produtores Python) enviam solicitações de consulta por especialidade via RabbitMQ (Exchange
topic
). - Assistentes Médicos (Consumidores Java) processam apenas solicitações de sua especialidade e confirmam/recusam agendamentos.
- Backend de Auditoria registra todas as mensagens (
agendamento.#
) para histórico.
- Responsabilidade: Enviar solicitações para:
agendamento.clinico_geral
agendamento.cardiologia
agendamento.pediatria
- Formato da Mensagem (JSON):
{ "dataSolicitacao": "02/04/2025 - 13:46", "nome": "paciente2", "especialidade": "Cardiologia", "dataConsulta": "02/05/2025 - 14:00" }
- Função:
- Receber solicitações específicas por especialidade.
- Verificar disponibilidade no calendário.
- Confirmar ou recusar consultas.
- Filas por Especialidade:
- Clínico Geral:
agendamento.clinico_geral
- Cardiologia:
agendamento.cardiologia
- Pediatria:
agendamento.pediatria
- Clínico Geral:
- Função:
- Consumir todas as mensagens (
agendamento.#
). - Registrar histórico completo em banco de dados.
- Consumir todas as mensagens (
✅ Java JDK 11+
✅ Python 3.8+
✅ RabbitMQ
✅ Maven (para o Spring Boot)
- Entre na pasta do consumidor:
cd consumer/
- Execute o Spring Boot:
.\mvnw.cmd spring-boot:run
- Entre na pasta do produtor:
cd publisher/
- Execute o script:
python agendamento_paciente.py
- Paciente envia:
{'dataSolicitacao': '04/04/2025 - 09:51', 'nome': 'lili', 'especialidade': 'Clinico geral', 'dataConsulta': '04/04/2025 - 14:00'} para agendamento.clinico_geral
- Assistente de Cardiologia:
- Verifica disponibilidade.
- Confirma consulta (se horário livre).
- Auditoria:
- Registra a mensagem no histórico.