Ir para conteúdo
  • Cadastre-se

dev botao

Lentidão ao gerar arquivo remessa


Ver Solução Respondido por DeveloperATS,
  • Este tópico foi criado há 253 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Boa tarde. 

Utilizo o ACBrLibBoleto-0.2.0.269 para emissão do boleto e geração do arquivo remessa.

Porem reparei que há uma lentidão na geração de arquivo remessa com vários títulos juntos. A suspeita da demora é no método 

int Boleto_IncluirTitulos(Pointer libHandler, String eArquivoIni, String eTpSaida);

O teste foi realizado com 16 títulos e houve uma demora de 22 segundos para emitir o arquivo. 

Obrigado.

  • Consultores
Postado

Bom dia @DeveloperATS!
Para que eu possa testar em meu ambiente , preciso de um pouco mais de informações.
Todos os 16 titulos são para mesma conta, mesmo dados de cedente ?
você utiliza alto nivel ou ini ?
Quando vc inclui os titulos, vc apenas envia o titulo ou envia repetidamente todos dados do cedente/conta etc?
Esta em qual ambiente linux ou windows , pelo ponteiro notei que usa MT.
Qual sua linguagem de programação ?
 

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • Membros Pro
Postado
1 minuto atrás, Daniel InfoCotidiano disse:

Bom dia @DeveloperATS!
Para que eu possa testar em meu ambiente , preciso de um pouco mais de informações.
Todos os 16 titulos são para mesma conta, mesmo dados de cedente ?
você utiliza alto nivel ou ini ?
Quando vc inclui os titulos, vc apenas envia o titulo ou envia repetidamente todos dados do cedente/conta etc?
Esta em qual ambiente linux ou windows , pelo ponteiro notei que usa MT.
Qual sua linguagem de programação ?
 

Olá, bom dia. 

Todos os títulos são para o mesmo cedente e mesma conta.

É utilizado ini em memoria; é enviado apenas os títulos repetitivos.

O ambiente de homologação e produção é Windows e a linguagem utilizada é Java. 

  • Membros Pro
  • Solution
Postado
47 minutos atrás, Daniel InfoCotidiano disse:

mais uma pergunta é API ou CNAB (qual banco esta usando) ?

 

Desenvolvi uma API em Java. 
É utilizado o CNAB400 do banco bradesco 

  • Consultores
Postado

Em nossos teste com java eu utilizo INI demorou alguns segundos. e eu mando da seguinte forma, vou  anexar meu ini aqui.
Vc consegue testar com meu ini? Titulo09Bol.ini

Uma dica de um dos nossos consultores  @antonio.carlos é vc utilizar cada ponteiro do multthread uma lista de titulos igual estou te enviando no incluir titulos.
 

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • Membros Pro
Postado
49 minutos atrás, Daniel InfoCotidiano disse:

Em nossos teste com java eu utilizo INI demorou alguns segundos. e eu mando da seguinte forma, vou  anexar meu ini aqui.
Vc consegue testar com meu ini? Titulo09Bol.ini

Uma dica de um dos nossos consultores  @antonio.carlos é vc utilizar cada ponteiro do multthread uma lista de titulos igual estou te enviando no incluir titulos.
 

Olá bom dia. 

Essa demora foi de quantos segundos? 

E foram utilizados somente 9 títulos? 

Outra duvida, o que seria esse "ponteiro do multithread", como ele poderia ser usado no Java e como ele afetaria a performance, considerando que a geração de um único arquivo sozinho já está lenta?


Obrigado. 

  • Consultores
Postado

Sim utilizei 9 títulos em meu ambiente;
Em um titulo no java demorou 2 a 3 segundos.
Sobre mult-thread, vou te mandar um link para melhor entendimento, mas na pratica ele executa varias tarefas simultâneas;
Entao vc nao precisa esperar incluir uma lista de titulo para incluir outra.. pode ter varias requisições ao mesmo tempo.
https://acbr.sourceforge.io/ACBrLib/ACBrLibeMultiThread.html

 

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • Membros Pro
Postado
1 hora atrás, Daniel InfoCotidiano disse:

Sim utilizei 9 títulos em meu ambiente;
Em um titulo no java demorou 2 a 3 segundos.
Sobre mult-thread, vou te mandar um link para melhor entendimento, mas na pratica ele executa varias tarefas simultâneas;
Entao vc nao precisa esperar incluir uma lista de titulo para incluir outra.. pode ter varias requisições ao mesmo tempo.
https://acbr.sourceforge.io/ACBrLib/ACBrLibeMultiThread.html

 

Beleza

Te perguntar, tem a possibilidade de realizar um teste com  16, 32, 77 títulos para analisarmos e compararmos o tempo gasto por vocês para emitirem o arquivo?

Obrigado  

  • Consultores
Postado

eu nao tenho um server especifico para isso. mas tenho java aqui no meu desktop... nao sei se serve p comparação.
mas pode me gerar o ini com a quantidade de registros q vc precisa tipo 77, q carrego aqui no meu ambiente de teste.

Pode aproveitar e mandar o log gerado pela lib?
se nestes boletos conter dados sensiveis, pode encaminhar por email por favor
[email protected] no corpo da mensagem cole o link deste post.

Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • Consultores
Postado
4 horas atrás, DeveloperATS disse:

títulos para analisarmos e compararmos o tempo gasto por vocês para emitirem o arquivo?

testando aqui o lote q vc me enviou. enviando todos juntos acabou de bater 1h e não terminou.
Falando com o time, o ideal é usar multithread criando uma instância para cada boleto.. assim não vai ficar travado, cada thread vai realizar uma inclusão simultaneamente.
Para isso tem q usar a Lib da pasta MT (multthread)
 

  • Curtir 1
Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

  • Membros Pro
Postado
8 minutos atrás, Daniel InfoCotidiano disse:

testando aqui o lote q vc me enviou. enviando todos juntos acabou de bater 1h e não terminou.
Falando com o time, o ideal é usar multithread criando uma instância para cada boleto.. assim não vai ficar travado, cada thread vai realizar uma inclusão simultaneamente.
Para isso tem q usar a Lib da pasta MT (multthread)
 

Já estou usando a DLL da pasta MT->StdCall

  • Consultores
Postado
5 minutos atrás, DeveloperATS disse:

Já estou usando a DLL da pasta MT->StdCall

Mesmo utilizando Lib versão MT..
Você esta chamando o método apenas 1 vez e passando todos os títulos, certo ?.. dessa forma o comportamento esta sendo em SingleThread..
 

Você pode chamar método IncluirTitulos e passar um título por vez.. pode reduzir o tempo de processamento.. são muitos títulos, realmente vai ocorrer uma certa demora.
Ou então, você precisa criar N instancias.. cada instancia terá 1 parâmetro Handle..
Quando chamando o método Incluir Títulos passando o valor de cada Handle no método.. e passa 1 títulos por instancia..

  • Curtir 1
  • Membros Pro
Postado
12 minutos atrás, antonio.carlos disse:

Mesmo utilizando Lib versão MT..
Você esta chamando o método apenas 1 vez e passando todos os títulos.. dessa forma o comportamento esta sendo em SingleThread..

Você precisa criar N instancias.. cada instancia terá 1 parâmetro Handle..
Quando chamando o método Incluir Títulos passando o valor de cada Handle no método.. e passa 1 títulos por instancia..

Poderia explicar melhor o funcionamento? 
Pois utilizamos a linguagem Java e emitimos 1 arquivo remessa contendo 77 títulos neste arquivo. 

Sendo inviável emitir um arquivo remessa para cada titulo  

  • 2 meses depois ...
  • Este tópico foi criado há 253 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.