Pergunta

Estou integrando diferentes contextos limitados com o autocarro de serviço do Windows e temos algumas perguntas:

1) Como detectou duplicatas em outros contextos limitados? Armazene a última sequência de mensagem processada? Eu quero a capacidade de reabastecer eventos para permitir a reconhecimento de novos contextos limitados HandleEvent(OrderPlaced orderPlaced, bool isReplay) que são comprados na produção no futuro para uma sincronização inicial.

2) Para o barramento de mensagem inter-contexto, usaríamos um tópico por contexto limitado (e terá o namespace para agrupar os contextos limitados)? Ou um único contexto limitado por namespace?

3) A documentação do barramento da mensagem diz que as mensagens podem chegar fora de ordem, que algoritmo deve ser usado para remontar em ordem? O que aconteceria se as mensagens 6 e 8 fossem recebidas, mas 7 nunca vieram? Nós esperamos por um tempo especificado e apenas continuar? Como permitir auto-reparação?

4) Eu imagino que o acima é muito comum em quase todos os projetos de DDD, existem bibliotecas que lidam com a mensagens, incluindo protocolo de comando / resposta para solicitar sincronização de eventos anteriores de um contexto externo?

Foi útil?

Solução

Isso não responde a maioria das suas perguntas, mas lhe dá uma alternativa.

Muitos desses problemas foram embora quando eu comecei a puxar eventos em vez de tê-los empurrados para mim.Se eu estou puxando, eu apenas mantenho um ponto de verificação do número do evento que eu processei.Quando eu precisar reconstruir, removo os modelos de leitura e o ponto de verificação e os novos modelos de leitura serão criados automaticamente.Desde que estou usando um único escritor, as duplicatas não são um problema.A encomenda também não é problema.

Ainda temos eventos para fora também - mas estes são usados apenas para comportamento reativo.Por exemplo;Quando um pedido é colocado, imprima um ticket.

se isso faz sentido para você, depende de quão rápido você precisa reagir às coisas, e quão fresco você precisa de seus dados para ser (1 segundo versus 30 segundos etc).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top