Acho que tenho informações suficientes para fornecer uma resposta. Pode não ser o que você está procurando, no entanto.
Do que discutimos e entendemos, temos o seguinte cenário:
- Grande número de mensagens a serem processadas;
- Persistência necessária para lidar com reinicializações limpas (não estou falando de picos de energia ou falta de energia);
- Tamanho inconsistente de cada mensagem;
- A necessidade de estrutura FIFO;
- Possibilidade de usar o sistema de arquivos como armazenamento;
- Precisa ser portátil, dentro de ambientes suportados (MacOS, Linux, Windows);
- Precisa ser auto-hospedado, não pode usar um provedor de fila externo;
Dito isso, eu arquiterei algo que dependesse 100% do sistema de arquivos.
Armazene cada mensagem como um único arquivo, nomeie-as com um timestamp ou um contador que você pode controlar de uma fonte confiável e aproveite os recursos do sistema de arquivos para você.
Você seria limitado pelo que o sistema de arquivos pode fazer por você (número de arquivos por diretório, número de diretórios por disco, tamanho máximo por arquivo, etc.), mas é muito flexível, fácil de depurar e monitorar e extremamente portátil e flexível, permitindo que você aumente a velocidade do seu IO mudando apenas o hardware (HD - > SSD - > Raid - > Storage Server, etc.).
Você terá que estudar diferentes sistemas de arquivos para empurrar cada um para os limites, mas o os mais comuns podem lidar com estes requisitos muito bem:
Os dados abaixo são copiados da excelente resposta no StackOverflow :
FAT32 :
- Número máximo de arquivos: 268.173.300
- Número máximo de arquivos por diretório: 2 16 - 1 (65,535)
- Tamanho máximo do arquivo: 2 GiB - 1 sem LFS , 4 GiB - 1 com
NTFS :
- Número máximo de arquivos: 2 32 - 1 (4.294.967.295)
- Tamanho máximo do arquivo
- Implementação: 2 44 - 2 6 bytes (16 TiB - 64 KiB)
- Teórico: 2 64 - 2 6 bytes (16 EiB - 64 KiB)
- Tamanho máximo do volume
- Implementação: 2 32 - 1 clusters (256 TiB - 64 KiB)
- Teórico: 2 64 - 1 clusters
ext2 :
- Número máximo de arquivos: 10 18
- Número máximo de arquivos por diretório: ~ 1,3 × 10 20 (problemas de desempenho após 10.000)
- Tamanho máximo do arquivo
- 16 GiB (tamanho do bloco de 1 KiB)
- 256 GiB (tamanho do bloco de 2 KiB)
- 2 TiB (tamanho do bloco de 4 KiB)
- 2 TiB (tamanho do bloco de 8 KiB)
- Tamanho máximo do volume
- 4 TiB (tamanho do bloco de 1 KiB)
- 8 TiB (tamanho do bloco de 2 KiB)
- 16 TiB (tamanho do bloco de 4 KiB)
- 32 TiB (tamanho do bloco de 8 KiB)
ext3 :
- Número máximo de arquivos: min (volumeSize / 2 13 , numberOfBlocks)
- Tamanho máximo do arquivo: igual ao ext2
- Tamanho máximo do volume: o mesmo que ext2
ext4 :
- Número máximo de arquivos: 2 32 - 1 (4.294.967.295)
- Número máximo de arquivos por diretório: ilimitado
- Tamanho máximo do arquivo: 2 44 - 1 bytes (16 TiB - 1)
- Tamanho máximo do volume: 2 48 - 1 bytes (256 TiB - 1)