Ir para conteúdo
  • Cadastre-se

dev botao

Múltiplas instancias Boleto


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

Recommended Posts

Bom dia Pessoal,

Estou com um problema na utilização da Lib do boleto, fiz a integração em  minha API  em C# conforme o projeto DEMO. Consigo gerar os boletos normalmente.

Meu problema é quando recebo duas requisições simultâneas a lib se perde e gera os 2 boletos no mesmo arquivo, conforme anexo.

Notem ainda que o correto seria tem 2 beneficiários diferentes, e nos boletos vem o mesmo.

Estou usando a lib da seguinte maneira.

var acbrBoleto = new ACBrBoleto(acbrIniFile);
_logger.LogInformation(LoggingEvents.BOLETO_LOGS, $"Generating boleto ${boleto.Guid}");
acbrBoleto.GravarValoresBoleto(boleto, _configuration);
acbrBoleto.IncluirTitulos(boletoTitulo);
var totalTitulos = acbrBoleto.TotalTitulosLista();
_logger.LogInformation(LoggingEvents.BOLETO_LOGS, $"Total de titulos na lista {totalTitulos}")
_logger.LogInformation(LoggingEvents.BOLETO_LOGS, $"Generating boleto ${boleto.Guid} PDF file.");
acbrBoleto.GerarPDF();

Mesmo na atual instancia da ACBrBoleto eu inserindo somente 1 titulo,  o total de titulos retorna 2, o da instancia atual e o da instancia da outra requisição. 

 

Resumindo, qual seria a maneira correta de utilizar a lib com múltiplas instancias?

 

79d1778a-683d-497b-a041-de746e1a1a3a.pdf

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Bom dia Norixam

A lib não é estruturada para trabalhar em Multithread com requisições simultâneas. Mas pelo que entendi do seu processo, se são beneficiários diferentes basta limpar a lista antes de incluir o próximo título. Você pode adicionar vários títulos de um mesmo Beneficiário para emissão ou mesmo geração de remessa, ou pode gerar um por vez sempre limpando a lista.

https://acbr.sourceforge.io/ACBrLib/Boleto_LimparLista.html

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

No meu caso o LimparLista não resolveu, pois as requisições são simultaneas, quando limpa a lista da primeira a segunda esta processando;.

Citar

A lib não é estruturada para trabalhar em Multithread com requisições simultâneas

Tem alguma previsão/planejamento para que isso ocorra? Tem como eu acessar o código da lib pra ver como ela está implementada?

 

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

Os fontes da lib estão no svn em https://svn.code.sf.net/p/acbr/code/trunk2/Projetos/ACBrLib.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

Está sendo analisada esta possibilidade.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

Bom dia,


Realizei um teste com o lock e mais algumas alterações no meu projeto e funcionou.

Apesar disso gostaria de ressaltar a importância de termos a lib funcionando com multithread. Por mais que tenha funcionado, acabou limitando a utilização da API que estava construindo e prejudicando a performance.

Creio que essa seja uma evolução muito importante para a lib, tanto tecnicamente quando em questão de negócios.
Aguardo novidades. 


Obrigado

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...
  • Membros Pro

Bom dia.

Estamos realizando a implementação de uma api REST em C# utilizando alguns recursos do ACBrLib e enfrentamos as mesmas dificuldades citadas pelo Norixam neste post. Conseguimos contornar o problema, mas com um alto custo em termos de performance. 

Seria realmente de grande utilidade se a dll suportasse operações multithreading e disponibilizasse recursos voltados para performance em ambientes web como, por exemplo, métodos de I/O assíncronos. Compreendo que não foi a proposta inicial do projeto, porém, tenho certeza que agregaria muito valor à solução.

 

Obrigado.

Editado por WLE
Link para o comentário
Compartilhar em outros sites

  • Administradores

Bom dia.

Obrigada pelo feedback, estamos trabalhando neste momento em melhorias neste sentido, assim que tivermos novidades, retornaremos aqui.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
  • Administradores

Boa tarde.

Já está disponível no ACBrLib a implementação para utilizar com multithread, veja mais no tópico abaixo.

Att.

  • Curtir 1
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

×
×
  • 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.