API > FromOrders

Estou criando o feed, baseado em “FromOrders”, pois quero ser notificado em todas as etapas do processo.
Peguei da página: Orders API
o comando pra criar o feed, que executei com sucesso:

{“filter”:{“type”:“FromOrders”,“expression”:“value > 100”,“disableSingleFire”:false},“queue”:{“visibilityTimeoutInSeconds”:250,“MessageRetentionPeriodInSeconds”:345600}}

Minha dúvida / problema é:
“expression”:“value > 100”

Na documentação diz que isso é uma expressão que precisa ser verdadeira para adicionar ao peer… Mais eu não quero ordens com valor maior que 100, eu quero todas as ordens… ai, se eu tiro essa propriedade do json, eu não consigo criar o Feed.

Como tem de ser esse json, para ser por FromOrders e todas as ordens, independentes de qualquer condição?

Olá Renata (@renatagrebogy), seja bem-vinda à VTEX Community!

O Orders Feed V3 trabalha com dois tipos de filtros. O FromOrders que você está utilizando, mas tbem tem o filtro FromWorkflow que talvez seja a melhor solução para filtras os pedidos de acordo com os status dos pedidos em lugar de fazer o filtro usando os dados dos pedidos.

Outro ponto importante é que o Orders Feed é um arquitetura passiva, que você precisa consultar para saber se tem algum pedido que coincide com o seu filtro e depois de ler um pedido, ainda precisa fazer um commit para que este pedido saia da fila.

Já usando o Orders Hook você pode configurar um endpoint para ser notificado sempre que um novo pedido for gerado nos mesmos moldes filtrando pelo FromOrders ou FromWorkflow.

Recomendo também a documentação abaixo que tem vários exemplos e explica muitos detalhes tanto do Order Feed quanto do Order Hook que poderão te ajudar a entender cada contexto e suas particularidades.

1 Like

Muito obrigada por contribuir.

Estamos usando o feed V3 com a opção FromOrders para uma integração de faturamento.

Outra dúvida que surgiu:
Existe no ambiente administrativo do VTEX a opção de forçar uma ordem já enviada a aparecer novamente no feed?

Por exemplo: digamos que, por algum motivo, o integrador pare de funcionar por um período maior que o MessageRetentionPeriodInSeconds e o cliente deseja forçar esses pedidos a passarem novamente, é possível?

1 Like

Olá @renatagrebogy, bom dia.

Meu caminho preferido é configurar um OrderHook para enviar as notificações dos pedidos com os status desejados para um endpoint que apenas recebe a notificação da VTEX e a envia para uma fila FIFO usando o Amazon SQS (por exemplo) para garantir primeiro a captura da notificação vinda da VTEX.

Então em outro serviço crio um worker para realizar o processamento da fila, justamente para que caso aconteca algum problema no processamento de uma notificação, ela fique na fila até o worker conseguir processá-la.

Desta forma os processos de “captura das notificações” e o “processamento das notificações” ficam independentes e confiáveis.

Quanto ao Order Feed, pelo o que lembro dele, sempre que um pedido sofre uma alteração ele volta pra fila, ou seja, para forçar o envio de um item de volta pra fila só se tiver alguma regra no expression que coincida com esta alteração.

Não sei se você já viu uma documentação que o @eduardo.luciano publicou aqui na comunidade com muitos detalhes sobre o Order Feed e o Order Hook. Vale a pena a leitura para garantir se no teu caso o ideal seria usar o Order Feed mesmo ou se vale a pena usar o Order Hook.

1 Like