Ir para conteúdo
  • Cadastre-se

dev botao

Múltiplas instancias Boleto


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

Recommended Posts

Postado

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

  • Moderadores
Postado

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.

Postado

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?

 

  • Administradores
Postado

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 !!

Postado

Muito obrigado. 

E sobre a questão:

Citar

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

Tem alguma previsão/planejamento para que isso ocorra?

  • Administradores
Postado

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 !!

  • Solution
Postado

por enquanto você pode usar o lock do c# ou usar um smaphore para controlar o acesso simultâneo, assim mesmo sendo feito a requisição simultâneas, serão executadas em fila.

 

Postado

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
  • 4 semanas depois ...
Postado (editado)

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
  • Administradores
Postado

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 !!

  • 1 mês depois ...
  • Administradores
Postado

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 !!

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