V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
felix9ia
V2EX  ›  数据库

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

  •  
  •   felix9ia · 10 天前 · 546 次点击

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

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

    2 条回复    2025-04-17 17:35:44 +08:00
    felix9ia
        1
    felix9ia  
    OP
       10 天前
    感觉只能将数据库操作,放到状态机更新成功的方法里,成功了再发通知。 这样就确保了两者的“原子性”?
    ilucio
        2
    ilucio  
       7 天前
    简单点:先写数据库然后再发通知
    搞复杂点:数据库时顺便记录下消息发送状态,然后在发送消息,同时更新消息状态,再加上消息异常重试机制,这样就能保障最终一致性了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5532 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 01:44 · PVG 09:44 · LAX 18:44 · JFK 21:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.