Gargalo ao utilizar o Stella Boleto em larga escala gerando mais mil boletos de uma vez.  XML
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Autor Mensagem
Daniel.F
GUJ Ranger

Membro desde: 29/03/2007 18:30:39
Mensagens: 909
Offline

Bom dia, PessoaLL.
Estou na seguinte situação tenho que gerar cerca de 3000 boletos de uma só vez
pelo Stella pemitir que gerar mais de boleto de só vez, e possuir metodos que retorna o pdf
em array de bytes e png além da documentação melhor também.
Fui fazer um teste agora gerando 500 boletos de uma só vez o Stella levou cerca de
11 minutos para gera-los a ainda o arquivo final tem 64 mb, quando cada boleto tem 47 kb.


Alguém teve esta experiência gerando esta quantidade de boletos com Stella
ou outro framework ou tem alguma sugestão para resolver este gargalo.

Desde já agradeço.


[Email]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Você não poderia gerar PDFs menores (com menos de 100 páginas cada um?)


[WWW]
Daniel.F
GUJ Ranger

Membro desde: 29/03/2007 18:30:39
Mensagens: 909
Offline

Não pq ai eu teria que iniciar os doownloads dos boletos gerados em separado para o usuário.


[Email]
garcia-jj
JWizard

Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline

Se você precisa de um processamento tão grande o mais correto é iniciar um processo asyncrono que gere os boletos individualmente e depois você pude usar um tar ou zip para unir os arquivos, e depois disso disponibilizar o download.
Daniel.F
GUJ Ranger

Membro desde: 29/03/2007 18:30:39
Mensagens: 909
Offline

Mas ai teria que gravar os lotes em disco que tornaria a operação mais custosa.Ou existe uma forma de trabalhar com array de Bytes usando os lotes?

This message was edited 1 time. Last update was at 11/02/2010 12:32:50



[Email]
garcia-jj
JWizard

Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline

Daniel.F wrote:Mas ai teria que gravar os lotes em disco que tornaria a operação mais custosa.Ou existe uma forma de trabalhar com array de Bytes usando os lotes?


Mais custo do que carregar 3 mil PDF em memória? Acho que há duas coisas a fazer, sendo que a primeira delas é otimizar seu código para evitar muito lixo na heap, e a segunda pensar em fazer cache em disco dos arquivos.

A menos que você trabalhe com clusters à lá GAE/J ou ECS a operação de gerar tantos PDFs assim não será nem um pouco curta. A melhor solução é realmente você fazer algo asincrono e depois entregar ao usuário tudo pronto.

This message was edited 1 time. Last update was at 11/02/2010 16:53:09


http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum.
esimioni
Entusiasta Java

Membro desde: 27/04/2007 17:17:51
Mensagens: 21
Offline

Você pode tentar também o Boleto Free. Cada boleto gerado tem 7.8KB, permite gerar multi-thread o que faria teu processo mais rápido, mas mesmo em mono-thread a performance é de mais de 300 boletos por segundo, o que geraria os 3000 boletos em no máximo 10 segundos, contando que a máquina não seja muito defasada.

Edit: Se você for gerar todos os boletos em um único PDF (funcionalidade disponível no Boleto Free), então o documento final para 3000 boletos ficará com 4.72MB (Cerca de 1.6KB por boleto), note que este tamanho pode ter pequenas variações conforme os dados de cada boleto. O tempo para a geração de 3000 boletos neste caso será de cerca de 5 segundos, não é possível utilizar usar multi-thread para melhorar este tempo por se tratar de um único arquivo.

Baixe a demo e faça um teste de performance, caso a performance seja abaixo do que eu indiquei, responda aqui neste tópico para analisarmos.

This message was edited 1 time. Last update was at 06/06/2010 17:28:00

 
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Ir para:   
Powered by JForum 2.1.8 © JForum Team