diff options
Diffstat (limited to '2025/03/19/领域驱动设计中聚合根持久化和事件发布可能导致数据不一致问题/index.html')
| -rw-r--r-- | 2025/03/19/领域驱动设计中聚合根持久化和事件发布可能导致数据不一致问题/index.html | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/2025/03/19/领域驱动设计中聚合根持久化和事件发布可能导致数据不一致问题/index.html b/2025/03/19/领域驱动设计中聚合根持久化和事件发布可能导致数据不一致问题/index.html index f899eeff..de021da0 100644 --- a/2025/03/19/领域驱动设计中聚合根持久化和事件发布可能导致数据不一致问题/index.html +++ b/2025/03/19/领域驱动设计中聚合根持久化和事件发布可能导致数据不一致问题/index.html @@ -192,7 +192,7 @@ </div> </div> <div class="post-content"> - <p>使用领域事件的一种直接做法是:在 <strong>应用服务</strong> (Application Service) 中产生事件并发布出去。例如,对于“用户昵称更新”的场景来讲,对应的应用服务 <code>UserCommandService</code> 实现如下:</p> + <p>使用领域事件的一种直接做法是:在 应用服务 (Application Service) 中产生事件并发布出去。例如,对于“用户昵称更新”的场景来讲,对应的应用服务 <code>UserCommandService</code> 实现如下:</p> <figure class="highlight fsharp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">member</span> <span class="keyword">public</span> this.UpdateMyName (command<span class="operator">:</span> UpdateUsernameCommand) (user<span class="operator">:</span> User) <span class="operator">=</span></span><br><span class="line"> <span class="keyword">let</span> user <span class="operator">=</span> userRepository.GetById user.Id</span><br><span class="line"> <span class="keyword">let</span> oldName <span class="operator">=</span> user.Username</span><br><span class="line"> <span class="keyword">let</span> newName <span class="operator">=</span> command.Username</span><br><span class="line"></span><br><span class="line"> user.UpdateUsername newName</span><br><span class="line"> <span class="operator">|></span> userRepository.Save</span><br><span class="line"> </span><br><span class="line"> UsernameChangeEvent (user.Id, newName, oldName) </span><br><span class="line"> <span class="operator">|></span> eventPublisher.Publish</span><br></pre></td></tr></table></figure> <p>这里,在更新了用户姓名之后,即刻调用事件发布器 <code>eventPublisher.Publish</code> 将事件发送到消息队列中。虽然这种方式比较流行,但它至少存在两个问题:</p> |
