Sobre o projeto

O QPub Server é um servidor de mensagens auto-hospedável que combina canais pub/sub em tempo real com filas de tarefas, expostos por interfaces REST e WebSocket. Destina-se a equipes que desejam executar sua própria infraestrutura de mensagens em vez de depender de um serviço hospedado. Recursos principais - Canais: mensagens de publicação/assinatura entregues via WebSocket, com publicação disponível por REST. - Filas de tarefas: enfileirar e retirar itens de trabalho, executar workers e receber webhooks. - Multi-tenancy: os tenants são isolados entre si e podem ter limites de taxa aplicados. - Autenticação: chaves de API e tokens de cliente protegem o acesso; um token de controle separado protege a API de provisionamento. - API de Controle: gerenciar tenants, chaves de API, limites, filas e workers, e inspecionar estatísticas e conexões em tempo real. Serviços de apoio O servidor depende do NATS JetStream, Redis e Postgres, com CockroachDB suportado como banco de dados alternativo por meio de uma configuração de driver. Primeiros passos O README sugere copiar o arquivo de ambiente de exemplo e executar o Docker Compose, que inicia o Postgres junto com Redis e NATS. As portas padrão são 8091 para a API de Controle, 8111 para REST e 8131 para WebSocket. Um tenant e uma chave de API devem ser criados por meio da API de Controle antes que chamadas REST ou WebSocket possam ser feitas. Um caminho de compilação local também é documentado usando ferramentas Go, exigindo que os mesmos serviços de apoio estejam acessíveis por meio da configuração de ambiente. A API de Controle é autenticada com um token bearer ou um cabeçalho personalizado; se o token for deixado vazio, a API de controle fica aberta, o que o README observa ser apenas para desenvolvimento local. Os endpoints documentados abrangem verificações de integridade, identidade e métricas da instância, criação, listagem, recuperação e exclusão de tenants, estatísticas por tenant, conexões, canais, limites de taxa, chaves de API, filas e workers. O projeto é licenciado sob a Apache License 2.0.