Em uma arquitetura orientada a eventos, cada componente atua apenas quando um evento é enviado pelo sistema.
Imagine um carro hipotético com um pedal de freio e uma luz de freio.
- As voltas da luz de freio sobre quando ele recebe um brake_on evento, e fora quando ele recebe um brake_off evento.
- O pedal do freio envia um evento brake_on quando é pressionado e um evento brake_off quando é liberado.
Tudo está bem, até que você tenha a situação em que o carro está ligado com o pedal do freio já pressionado . Como a luz do freio nunca recebeu um evento brake_on , ela permanecerá apagada - claramente uma situação indesejável. Ligar a luz do freio por padrão apenas reverte a situação.
O que poderia ser feito para resolver esse 'problema inicial de estado'?
EDIT: Obrigado por todas as respostas. Minha pergunta não era sobre um carro de verdade. Nos carros, eles resolviam esse problema enviando continuamente o estado - portanto, não há problema de inicialização nesse domínio. No meu domínio de software, essa solução usaria muitos ciclos desnecessários de CPU.
EDIT 2: Além da resposta de @ gbjbaanb , vou para um sistema em que:
- o pedal de freio hipotético, após a inicialização, envia um evento com seu estado e
- a luz de freio hipotética, após a inicialização, envia um evento solicitando um evento de estado do pedal do freio.
Com esta solução, não há dependências entre componentes, condições de corrida, filas de mensagens para ficar obsoletas e componentes 'mestre'.
initialize
) que contém os dados necessários do sensor.