Serviços de segundo plano no Jitterbit App Builder
Visão geral
O recurso App Builder Background Services permite que o App Builder execute Eventos de longa duração em uma fila de segundo plano limitada. O serviço em si é hospedado pelo aplicativo da Web App Builder no IIS. Enquanto o site estiver em execução, o serviço de segundo plano estará em execução. Ele não requer nenhuma instalação ou configuração adicional.
Há dois componentes envolvidos no App Builder Background Service:
Fila de fundo
Muitas vezes, um desenvolvedor cria um Evento que executa várias Ações, possivelmente abrangendo várias fontes de dados, ou mesmo chamadas REST para sistemas externos. A fila de segundo plano permite que o desenvolvedor especifique que o Evento deve ser executado em segundo plano em vez de em primeiro plano. Há alguns benefícios em fazer isso:
- Ao clicar em um botão para executar um Evento, o controle é imediatamente retornado ao cliente. O cliente pode continuar com seu trabalho enquanto o job continua a ser executado no sistema hospedar.
- A fila de segundo plano economiza recursos. Ao colocar Eventos em segundo plano, o que de outra forma ocuparia recursos, o desenvolvedor permite que o App Builder limite a execução desses Eventos. Conforme a carga no sistema cresce, o nível de paralelismo da Fila de Tarefas reduz. Isso permite que o servidor web opere com mais threads e mais acesso à CPU. Por exemplo, se 100 pessoas fizerem logon no site e clicarem em um botão que executa um Evento, o IIS precisaria lidar com 100 execuções simultâneas desse Evento. Ao enviar o Evento para a fila de tarefas, podemos reduzir a simultaneidade para executar apenas um pequeno número simultaneamente, o que libera recursos para o site.
-
A fila de segundo plano monitora eventos e armazena histórico. Pretendemos estender essa funcionalidade para todos os Eventos no futuro. Por enquanto, se você estiver interessado em manter um log do histórico de execução de um Evento, incluindo:
- Quem organizou o evento?
- Quando eles executaram isso
- Quanto tempo demorou para ser executado
- Foi bem-sucedido (se não, quais erros ocorreram)
Essas informações estão disponíveis na seção Monitoramento do IDE. Na página inicial, você encontrará uma lista de serviços em execução e uma lista de agendamentos ou eventos em execução.
Nota
O Background Service apara as tabelas de log todos os dias. Ele exclui todos os eventos bem-sucedidos com mais de 7 dias e todos os eventos com falha com mais de 30 dias.
Para especificar que um Evento deve ser executado em segundo plano, o desenvolvedor deve localizar o Evento, clicar duas vezes no Evento, editá-lo e selecionar um Tipo de Execução de Launch Now (Background). Desse ponto em diante, o App Builder enfileirará o Evento para execução sempre que um usuário o executar.
Se seu Evento tiver regras de validação, e essas regras retornarem um erro, o App Builder retornará os resultados imediatamente ao usuário junto com as mensagens de validação, e cancelará a execução do Evento na fila. Aviso Validações não são suportadas ao executar o Evento em segundo plano.
Se for apropriado, considere alterar a mensagem de sucesso do evento para que ela transmita ao usuário final que a operação está sendo executada em segundo plano.
O App Builder Job Queue dorme indefinidamente, usando recursos mínimos até que um evento seja enfileirado. Ele não pesquisa por jobs para executar. Em vez disso, ele utiliza o The Task-based Asynchronous Pattern da Microsoft, garantindo que os recursos do sistema sejam totalmente utilizados.
Agendador
O App Builder oferece suporte ao agendamento da execução de Eventos em vez de exigir a execução manual de Eventos. O agendador, como a fila de tarefas, está em execução no Serviço em Segundo Plano enquanto o aplicativo da Web estiver em execução. O App Builder atualmente oferece suporte a um modo de execução para um Evento agendado, chamado de execução de várias linhas. Isso é diferente de um Evento executado por meio de clique de botão. Quando um usuário executa um Evento em um objeto de negócios, ele é executado em uma única linha. Quando o agendador executa um Evento, ele é executado em todo o objeto de negócios. Isso significa que a fila faz um loop em cada linha no objeto de negócios e executa o Evento agendado nessa linha. Ele faz isso enfileirando cada linha para execução pela fila de tarefas.
Como os Eventos agendados são enviados à fila de tarefas para execução, o App Builder consegue aproveitar os benefícios de desempenho que vêm com a throttling da execução desses conjuntos de dados potencialmente grandes. Isso também fornece a mesma visibilidade para Eventos agendados com relação ao monitoramento e registro. Haverá uma entrada no registro para cada linha executada pelo Evento agendado. As informações da chave primária para cada linha serão incluídas no registro para ajudar a encontrar e depurar problemas.
Para agendar um Evento para execução, localize o Evento, clique duas vezes nele e defina o Tipo de Execução como Iniciar via Agenda (Plano de Fundo). Isso permitirá que o Evento seja anexado a uma Agenda.
Para criar um cronograma, vá para a seção Monitoramento no IDE. Clique em Cronogramas e crie um novo Cronograma.
A seguir estão os tipos de agendamentos que o App Builder suporta:
- Execução Única - Selecione um dia e hora no futuro para o Evento ser executado. O App Builder executará o Evento no horário agendado e então desativará o agendamento.
- Execução Periódica - Executa o Evento a cada X segundos/minutos/horas.
- Execução Diária - Executa o Evento em um horário exato a cada X dias. Isso pode ser configurado para ser executado todos os dias, a cada 3 dias, a cada 7 dias e assim por diante.
- Execução Semanal - Execute o Evento em um horário exato, em um dia exato da semana, a cada X número de semanas. Nesta programação, o desenvolvedor pode escolher dias específicos da semana para executar o Evento. Por exemplo, execute todo domingo e quarta-feira às 19h.
- Execução Acionada - Executa o Evento em resposta a um sinal, como um usuário fazendo login no sistema.
Para adicionar um Evento a um agendamento, vá para a página Agendamentos e clique no ícone Eventos. Adicione o Evento ao agendamento, especificando uma simultaneidade máxima e o ID do usuário que executará o Evento. Se o objeto de negócios Evento retornar várias linhas, o App Builder tentará executar o Evento em cada linha com a simultaneidade especificada. Por exemplo, se 100 linhas forem retornadas pelo objeto de negócios e a simultaneidade máxima for 3, o App Builder tentará executar 3 instâncias de evento simultaneamente, até que o Evento tenha sido executado 100 vezes (uma vez para cada linha).
Nota
Veja o seguinte artigo em Executar como usuário se você estiver procurando executar um Evento Agendado como um Usuário especificado.
Instâncias de serviço
Esta página permite que o usuário pare/inicie o serviço em segundo plano e monitore os serviços ativos e os trabalhos em execução.
- Ela fornece a data de início do serviço e o tempo de atividade.
-
Há botões Parar e Iniciar para parar o serviço em segundo plano.
-
Parar drenará todos os trabalhos em execução no momento para finalizar e cancelar quaisquer trabalhos existentes na fila. Também impedirá que quaisquer eventos agendados ou invocados sejam enfileirados.
- Iniciar iniciará o serviço em segundo plano novamente, limpará a tabela de atividades e começará a agendar e dar suporte ao evento em segundo plano
- A página não atualiza constantemente seu estado na IU, então há um botão Atualizar. Clicar em Atualizar carregará as informações mais recentes para as instâncias de serviço em execução e os trabalhos em execução sem exigir que o usuário atualize o navegador inteiro.
Página de logs
- Mostra mensagens da instância atual em execução do serviço.
- Disponível na página Instâncias de serviço
Cancelamento de um trabalho
A maneira como o App Builder cancela um trabalho é diferente dependendo do estado do trabalho e do tipo de trabalho que está sendo executado.
- Estado Pendente - O trabalho foi criado e enfileirado, mas ainda não está em execução. Neste estado, o App Builder cancela o trabalho imediatamente.
- Estado de execução - Se o trabalho estiver em execução, o App Builder envia uma solicitação de cancelamento para o trabalho. Algumas operações demoram mais para cancelar do que outras, e algumas operações não permitem interrupção. Quando o trabalho atinge um ponto que suporta cancelamento, ele cancelará e atualizará suas informações de atividade.
- Schedule Job - Se o trabalho for um trabalho agendado e tiver criado n número de trabalhos para executar o evento agendado. Cancelar o trabalho agendado também cancelará os trabalhos que ele iniciou. Em outras palavras, ele cancela toda a execução do agendamento.