Integração com o SIRG
Arquitetura, objetivos e como integrar via HTTP e RabbitMQ.
Objetivos
- Compartilhar capacidade regional por meio de pactos entre municípios.
- Publicar e consumir solicitações de forma segura e rastreável.
- Integrar sistemas externos via HTTP e mensageria RabbitMQ.
- Reduzir tempo de espera e aumentar a eficiência na regulação.
Arquitetura
Backend Spring Boot, Frontend SvelteKit e RabbitMQ para distribuição de eventos. Troca via TopicExchange (regional_topic_exchange) e filas por município.
Filas compartilhadas
- encaminhamento.<MUNICIPIO>.pacto.<ID>.nova: novas solicitações publicadas.
- evento-claim-aceite.<ORIGEM>.pacto.<ID>: confirmação de consumo.
- convite/convite-aceite e ingresso/ingresso-aceite: convites e ingressos.
- agendamento-externo: sinalização de agendamentos externos.
Configuração local
- Queue: app.municipio.queue-name.
- Identificador (routing keys): app.municipio.nome-identificador.
- Exchange central: regional_topic_exchange.
Integração HTTP
1) Cadastro público de município
POST /api/registry/municipios/register-public
{
"nome": "Santo Antônio de Jesus",
"cnes": "0000000",
"rabbitQueueName": "SAJ_QUEUE",
"baseUrl": "https://saj.gov.br/sirg"
}2) Listar pactos públicos
GET /api/registry/pactos
curl -s http://HOST/api/registry/pactos3) Solicitar ingresso em um pacto
POST /api/registry/pactos/{pactoId}/join-requests
{
"mensagem": "Gostaríamos de participar com a fila da cardiologia."
} Observação: a instância chamadora usa seu município local para identificar o solicitante. Pode requerer autenticação.
4) Criar pacto (autenticado)
POST /api/pactos
{
"nome": "Pacto Regional de Oftalmologia",
"descricao": "Compartilhamento de consultas e exames de oftalmologia"
}Mensageria (RabbitMQ)
Exchange: regional_topic_exchange
Bindings por município
- encaminhamento.<MEU_MUNICIPIO>.#
- convite.<MEU_MUNICIPIO>.# e convite-aceite.<MEU_MUNICIPIO>.#
- ingresso.<MEU_MUNICIPIO>.# e ingresso-aceite.<MEU_MUNICIPIO>.#
- evento-claim-aceite.<MEU_MUNICIPIO>.#
Exemplos de routing key
encaminhamento.SAJ.pacto.42.nova
evento-claim-aceite.SAJ.pacto.42
convite.FEIRA_DE_SANTANA.pacto.7
ingresso-aceite.SAJ.pacto.7 Mensagens trafegam como JSON (ex.: PactoEventoResumoDTO, PactoJoinRequestMensagemDTO).
Pactos públicos
| ID | Nome | Descrição |
|---|---|---|
| Nenhum pacto disponível. | ||
Cadastro de Município Externo
Use este formulário para anunciar seu município e facilitar a descoberta por outros pactos.
