private void Consumidor(Model.Integracao integracao, Selia.Integrador.Adapter.Rest.Config configuracao) { int maxDegreeOfParallelism = integracao.NivelParalelismo; Parallel.ForEach(integracao.Fila, new ParallelOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism }, (fila) => { ExecutaItemFila(integracao, fila, configuracao); }); }
public static Selia.Integrador.Adapter.Rest.Config IntegracaoParaRest(this Model.Integracao integracao) { var ret = new Selia.Integrador.Adapter.Rest.Config(); var rest = ((Model.Interface.Rest)integracao.Interface.Item); ret.Rest = rest; ret.AcaoFinal = integracao.AcaoFinal; ret.AcaoInicial = integracao.AcaoInicial; ret.ElementoSeparador = integracao.ElementoRegistro; ret.AcaoCabecalho = integracao.AcaoCabecalho; ret.NodesNaoUtilizados = integracao.NodesNaoUtilizados; return(ret); }
private void Executor(Model.Integracao integracao, Selia.Integrador.Adapter.Rest.Config configuracao) { try { Selia.Integrador.Adapter.Resultado objResult = new Selia.Integrador.Adapter.Rest().Executar(configuracao); if (objResult.TipoMensagem == Selia.Integrador.Adapter.Resultado.Tipo.Sucesso) { new BS.Fila().ProcessarFila(objResult, integracao, configuracao.Mapeamentos); } else { Model.LogIntegracao entLogIntegracao = new Model.LogIntegracao(); entLogIntegracao.Conteudo = objResult.Mensagem; entLogIntegracao.Integracao = integracao; entLogIntegracao.Status = 1; new BS.LogIntegracao().Inserir(entLogIntegracao); //ServiceLog.LogError(String.Format("Erro: {0} - Message: {1}", integracao.Nome, objResult.Mensagem)); } } catch (Selia.Integrador.Utils.Exceptions.HttpRestRetornoException exIntegradoRetorno) { Model.LogIntegracao entLogIntegracao = new Model.LogIntegracao(); entLogIntegracao.Conteudo = string.Format("{0} - {1}", exIntegradoRetorno.Message, exIntegradoRetorno.InformacaoAdicional); entLogIntegracao.Integracao = integracao; entLogIntegracao.Status = 2; //1 Sucesso 2 Erro new BS.LogIntegracao().Inserir(entLogIntegracao); //ServiceLog.LogError(String.Format("Erro: {0} - Message: {1} - StackTrace: {2}", integracao.Nome, exIntegradoRetorno.Message, exIntegradoRetorno.ToString())); } catch (Exception ex) { Model.LogIntegracao entLogIntegracao = new Model.LogIntegracao(); entLogIntegracao.Conteudo = ex.Message; entLogIntegracao.Integracao = integracao; entLogIntegracao.Status = 1; new BS.LogIntegracao().Inserir(entLogIntegracao); //ServiceLog.LogError(String.Format("Erro: {0} - Message: {1} - StackTrace: {2}", integracao.Nome, ex.Message, ex.StackTrace)); } }
private void ExecutaItemFila(Model.Integracao integracao, Model.Fila fila, Selia.Integrador.Adapter.Rest.Config configuracao) { var integracaoID = integracao.ID; string conteudoFila = null; try { var xmlFila = new XmlDocument(); xmlFila.LoadXml(fila.Conteudo); conteudoFila = fila.Conteudo; Selia.Integrador.Adapter.Resultado objResult = new Selia.Integrador.Adapter.Rest().Executar(configuracao, xmlFila); Model.LogFila logFila = new Model.LogFila(); logFila.Conteudo = objResult.ParametrosEnvio; logFila.ConteudoFila = fila.Conteudo; logFila.ChavePrimaria = fila.ChavePrimaria; logFila.ChaveSecundaria = fila.ChaveSecundaria; logFila.LogIntegracao.ID = fila.LogIntegracaoID; logFila.RespostaSemTratamento = objResult.RespostaSemTratamento; logFila.FilaID = fila.ID; logFila.IntegracaoID = integracao.ID; if (objResult.RespostaXmlCompleta != null) { logFila.ConteudoRetorno = objResult.RespostaXmlCompleta.InnerXml; } if (objResult.TipoMensagem == Selia.Integrador.Adapter.Resultado.Tipo.Sucesso) { new BS.Fila().Excluir(fila.ID); if (integracao.Destino != null) { new BS.Fila().ProcessarFila(objResult, integracao, configuracao.Mapeamentos); } } else { new BS.Fila().AtualizarStatus(Model.Fila.TipoStatus.Erro, fila.ID); } new BS.LogFila().Inserir(logFila); } catch (Selia.Integrador.Utils.Exceptions.HttpRestRetornoException exIntegradoRetorno) { Model.LogFila logFila = new Model.LogFila(); logFila.ChavePrimaria = fila.ChavePrimaria; logFila.ChaveSecundaria = fila.ChaveSecundaria; logFila.LogIntegracao.ID = fila.LogIntegracaoID; logFila.FilaID = fila.ID; logFila.ConteudoFila = fila.Conteudo; logFila.Conteudo = exIntegradoRetorno.ParamentroEnvio; logFila.RespostaSemTratamento = "Connection: " + ConnectionMonitor.Monitor.Instance.GetStatus() + " ** " + exIntegradoRetorno.RetornoNaoTratado; logFila.ConteudoRetorno = exIntegradoRetorno.RetornoTratado; logFila.IntegracaoID = integracao.ID; new BS.LogFila().Inserir(logFila); new BS.Fila().AtualizarStatus(Model.Fila.TipoStatus.Erro, fila.ID); Model.LogIntegracao entLogIntegracao = new Model.LogIntegracao(); entLogIntegracao.Conteudo = string.Format("{0} - Valor de entrada:{1}", exIntegradoRetorno.ToString(), exIntegradoRetorno.InformacaoAdicional); entLogIntegracao.Integracao = integracao; entLogIntegracao.Status = 2; //1 Sucesso 2 Erro new BS.LogIntegracao().Inserir(entLogIntegracao); //ServiceLog.LogError(String.Format("Erro: {0} - Message: {1} - StackTrace: {2}", integracao.Nome, exIntegradoRetorno.Message, exIntegradoRetorno.ToString())); } catch (Selia.Integrador.Utils.Exceptions.HttpRestException exIntegrador) { new BS.Fila().AtualizarStatus(Model.Fila.TipoStatus.Erro, fila.ID); Model.LogFila logFila = new Model.LogFila(); logFila.ChavePrimaria = fila.ChavePrimaria; logFila.ChaveSecundaria = fila.ChaveSecundaria; logFila.LogIntegracao.ID = fila.LogIntegracaoID; logFila.FilaID = fila.ID; logFila.ConteudoFila = fila.Conteudo; logFila.Conteudo = exIntegrador.ParamentroEnvio; logFila.RespostaSemTratamento = "Connection: " + ConnectionMonitor.Monitor.Instance.GetStatus() + " ** " + exIntegrador.RetornoNaoTratado; logFila.ConteudoRetorno = exIntegrador.RetornoTratado; logFila.IntegracaoID = integracao.ID; new BS.LogFila().Inserir(logFila); new BS.Fila().AtualizarStatus(Model.Fila.TipoStatus.Erro, fila.ID); if (!string.IsNullOrEmpty(integracao.AcaoReturnoErro)) { List <object> parametros = new List <object>(); parametros.Add(fila.ID); parametros.Add(fila); parametros.Add(exIntegrador.InformacaoAdicional); new Selia.Integrador.Utils.Generic.Invoke().Exec(integracao.AcaoReturnoErro.Split(';')[0], integracao.AcaoReturnoErro.Split(';')[1], parametros); } else { Model.LogIntegracao entLogIntegracao = new Model.LogIntegracao(); entLogIntegracao.Conteudo = exIntegrador.Message; entLogIntegracao.Integracao = integracao; entLogIntegracao.Status = 2; //1 Sucesso 2 Erro new BS.LogIntegracao().Inserir(entLogIntegracao); //ServiceLog.LogError(String.Format("Erro: {0} - Message: {1} - StackTrace: {2}", integracao.Nome, exIntegrador.Message, exIntegrador.ToString())); } } }