felix9ia
V2EX  ›  数据库

状态机的 fireEvent 和 数据库操作(创建/更新)谁先谁后?

  •  
  •   felix9ia · Apr 14, 2025 · 1748 views
    This topic created in 410 days ago, the information mentioned may be changed or developed.

    如果先 fireEvent ,我的担忧是如果数据库操作失败,fireEvent 中的通知已经发出怎么办?

    如果先操作数据库,那 fireEvent 之后岂不是又要更新一次数据库?

    2 replies    2025-04-17 17:35:44 +08:00
    felix9ia
        1
    felix9ia  
    OP
       Apr 14, 2025
    感觉只能将数据库操作,放到状态机更新成功的方法里,成功了再发通知。 这样就确保了两者的“原子性”?
    ilucio
        2
    ilucio  
       Apr 17, 2025
    简单点:先写数据库然后再发通知
    搞复杂点:数据库时顺便记录下消息发送状态,然后在发送消息,同时更新消息状态,再加上消息异常重试机制,这样就能保障最终一致性了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1215 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 17:38 · PVG 01:38 · LAX 10:38 · JFK 13:38
    ♥ Do have faith in what you're doing.