域事件的可靠异步处理



在并发系统中,域事件通常是异步处理的。在 Go 中,可以通过通道实现一种简单的异步事件处理方法,但问题是,如果处理一个事件时发生了不好的事情,或者整个程序发生了最坏的情况,那么事件就会丢失。

如何在 Go 程序中正确处理异步域事件,即:

  • 当事件处理程序失败时,不应从事件队列中清除该事件,以便以后正确处理。
  • 如果整个程序出现故障,则必须相应地恢复和处理事件。

第一种相对容易;您可以在工作线程中有一个错误处理程序,以便在发生错误时重新排队工作。

第二个要困难得多;你的选择是:a)采用自己的防弹机制,将事件写入磁盘,并在以线程安全的方式完成事件时清除它们,或者b)使用许多已经证明可靠的流行系统之一,例如RabbitMQ或Kafka,具有适当的复制和冗余,以确保所需的可靠性级别。我强烈推荐后者。

相关内容

  • 没有找到相关文章

最新更新