Fila de Solicitações Diferidas
Há casos de uso em que uma entidade é definida com um status que aguarda que uma tarefa subsequente seja executada de forma assíncrona para que ela avance no ciclo de vida. Essa tarefa é implementada usando regras de monitoramento conectadas à definição de status do objeto de negócios da entidade juntamente com um controle batch. Essas regras de monitoramento não são processadas imediatamente quando o registro insere esse status, mas sim quando o batch associado é executado em seguida.
As seções a seguir descrevem conceitos e recursos do mecanismo de processamento quase em tempo real.
Solicitando Processamento Quase em Tempo Real
Quando uma entidade insere um status associado às regras de monitoramento diferido dependente de tempo, é possível fazer uma solicitação para processar essas regras o mais rápido possível após a confirmação da transação atual.
-
Para sempre enviar a entidade para processamento quase em tempo real quando atingir um status específico, adicione o algoritmo "Adicionar uma Solicitação Diferida" (F1-DFREQADDN) "Inserir" à respectiva definição de status do objeto de negócios. Consulte a descrição detalhada do algoritmo para obter mais informações.
-
Você pode usar a função DeferredRequestAPI em um algoritmo baseado em Groovy para implementar regras personalizadas a respeito de quando e como adicionar essa solicitação à fila.
-
Quando aplicável, a funcionalidade Sincronização de Dados Genéricos também oferece suporte a uma opção para processamento quase em tempo real que usa a fila de Solicitações Diferidas.
Tratamento de Exceções
Quando aplicável, o envio de entidades a serem processadas quase em tempo real permite que o batch de monitoramento correspondente seja programado com menos frequência, pois não precisa mais atender aos requisitos de frequência quase em tempo real. Com a maioria dos registros processados com sucesso pelo mecanismo quase em tempo real, o batch de monitoramento é usado principalmente para tratar exceções.
Solicitações Correlacionadas
Por padrão, as mensagens na fila são processadas sem uma ordem específica. Em situações em que várias mensagens atualizam o mesmo recurso, pode haver a necessidade de processá-las em série para evitar erros de simultaneidade.
Quando adicionada à fila, a mensagem pode fazer referência à entidade principal que ela atualiza para correlacioná-la com outras mensagens que atualizam a mesma entidade. As mensagens que fazem referência explícita à mesma entidade principal são processadas em série.
Aplicar Atraso de Polling
Quando o status atual de uma entidade é associado a regras de monitoramento que aguardam que uma condição específica seja atendida para determinar o próximo status para o qual a entidade deve fazer a transição, não é suficiente executar essas regras de monitoramento uma vez. A condição pode não ser atendida inicialmente, mas isso pode ocorrer pouco tempo depois. Nessa situação, a solicitação diferida colocada na fila pode indicar que ela requer intervalo de polling.
Quando o intervalo de polling é solicitado, a mensagem de solicitação diferida na fila é processada da seguinte forma:
- Quando a mensagem é adicionada à fila, o status atual da entidade relacionada é anotado.
- Após o processamento bem-sucedido da mensagem, se o status da entidade relacionada permanecer inalterado, o agente da fila concluirá a mensagem atual e adicionará outra mensagem à fila juntamente com um pequeno atraso, ou seja, definirá a entidade a ser processada novamente mais tarde.
- Este processo se repete para um número limitado de tentativas. A cada tentativa, o atraso em segundos aumenta.
- Se o status da entidade relacionada permanecer inalterado após todas as tentativas, a mensagem será descartada sem exceção. A entidade relacionada seria monitorada normalmente pela próxima execução em batch programada.
