Надежная асинхронная обработка доменных событий - PullRequest
0 голосов
/ 25 января 2019

В параллельных системах доменные события обычно обрабатываются асинхронно.В Go простой подход к асинхронной обработке событий может быть реализован через каналов , но проблема заключается в том, что если что-то случится плохо при обработке события или хуже всего для всей программы, событие будет потеряно.

Как правильно обрабатывать события асинхронного домена в программе Go, например:

  • При сбое обработчика события его не следует удалять из очереди событий, чтобыбудет обработан должным образом в более позднее время.
  • Если вся программа выходит из строя, события должны быть восстановлены и обработаны соответственно.

1 Ответ

0 голосов
/ 25 января 2019

Первый относительно легкий;у вас может быть обработчик ошибок внутри рабочего, который ставит работу в очередь в случае ошибки.

Второе намного сложнее;Вы можете: а) развернуть свой собственный пуленепробиваемый механизм для записи событий на диск и очистки их, когда они завершены потокобезопасным способом, или б) использовать одну из многих, многих популярных систем, которые уже доказали свою надежность, например, RabbitMQ илиКафка, с соответствующей репликацией и резервированием для обеспечения требуемого уровня надежности.Я настоятельно рекомендую последнее.

...