Condições de corrida
Uma condição de corrida é um conceito em que um resultado depende da sequência ou do tempo de outros eventos.
Por exemplo, se a sequência desejada de eventos for “Evento A” e depois “Evento B”, mas às vezes o “Evento A” vem primeiro e outras vezes o “Evento B” vem primeiro, isso é conhecido como condição de corrida.
Direcionamento a novos usuários
No Braze, uma das condições de corrida mais comuns ocorre com mensagens direcionadas a usuários recém-criados. Aqui, a ordem esperada dos eventos é:
- Um usuário é criado;
- O mesmo usuário é imediatamente direcionado para uma mensagem, realiza um evento personalizado ou registra um atributo personalizado.
Entretanto, em alguns casos, o segundo evento será disparado primeiro. Isso significa que uma mensagem está tentando ser enviada a um usuário que ainda não foi criado e, como resultado, o usuário nunca a recebe. O mesmo se aplica a eventos ou atribuições, em que o evento ou atributo está tentando ser registrado de usuários de eventos que ainda não existem.
Uso de vários endpoints de API
Há alguns cenários em que vários endpoints da API também podem resultar nessa condição de corrida, como quando:
- Usar endpoints de API separados para criar usuários e disparar Canvas ou campanhas
- Fazer várias chamadas separadas para o endpoint
/users/track
para atualizar atributos, eventos ou compras personalizados
Quando as informações do usuário são enviadas para a Braze por meio do endpoint /users/track
, elas podem levar alguns segundos para serem processadas. Como resultado, quando são feitas solicitações aos endpoints /users/track
e de envio de mensagens ao mesmo tempo, atualmente não há garantia de que as informações do usuário serão atualizadas antes do envio de uma mensagem.
Em ambos os cenários anteriores, se essas solicitações forem feitas na mesma solicitação de API, não haverá problema.
Se as atribuições e os eventos do usuário forem enviados na mesma solicitação (de /users/track
ou do SDK), o Braze processará os atributos antes dos eventos ou da tentativa de enviar qualquer mensagem.
Note que, se estiver enviando uma solicitação de API de mensagem programada, essas solicitações deverão ser separadas e um usuário deverá ser criado antes de enviar a solicitação de API programada.
Evitando a condição de corrida
Uma maneira de evitar essa condição de corrida é adicionar uma postergação - cerca de um minuto - entre a criação de um usuário e o direcionamento desse usuário pelo seu Canva ou campanha, ou a tentativa de registro de usuários de eventos para esse perfil de usuário.
Da mesma forma, você pode usar o objeto Attributes
para adicionar, criar ou atualizar um usuário e, em seguida, direcioná-lo usando o endpoint/canvas/trigger/send
ou /campaign/trigger/send
. Essa solicitação da API processará o objeto attributes
antes de direcionar os usuários.
As atribuições incluídas nesse objeto serão processadas antes que o Braze comece a enviar a campanha. Se o sinalizador send_to_existing_only
estiver definido como false e não existir um external_user_id
no banco de dados do Braze, criaremos um perfil de usuário para o external_user_id
e processaremos as atribuições associadas ao perfil de usuário antes que o Braze comece a enviar a campanha. Observe também que, se o sinalizador send_to_existing_only
estiver definido como false, o objeto de atribuição deverá ser incluído para criar o usuário. O sinalizador send_to_existing_only
não pode ser usado com aliases de usuário.
Correspondência de disparadores baseados em ação e filtros de público
Outra condição de corrida comum pode ocorrer se você configurar uma campanha baseada em ação ou o Canvas com o mesmo disparo que o filtro de público (como um atributo alterado ou a realização de um evento personalizado). O usuário pode não estar no público no momento em que realizar o evento de gatilho, o que significa que ele não receberá a campanha nem entrará no Canva. Nesse caso, a Braze recomenda que você evite configurar seu disparador para corresponder ao filtro de público.
Evitando a condição de corrida
Uma maneira de evitar essa condição de corrida pode ser adicionar uma postergação de mais de um minuto para permitir que os usuários tenham tempo suficiente para entrar no Canva.