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