【发布时间】:2021-07-04 23:43:39
【问题描述】:
有一个聚合根 User 建模为 NServiceBus Saga
User.cs
public class User {
....
public string Rename(string name) {
.// some validation logic
}
...
}
UserSagaData.cs
public class UserSagaData : ContainSagaData
{
public User User { get; set;}
}
UserSaga.cs
public partial class UserSaga : Saga<RenameUser>
{
...
public async Task Handle(RenameUserimportAttendees, IMessageHandlerContext context)
{
Data.User.rename(...
}
...
}
现在我需要通过 REST API 接受 RenameUser 命令并在 HTTP 响应中提供反馈,因此不能从 Controller.Action 向消息代理发送RegisterUser。我需要同步执行命令,获取反馈并发送 http 响应。
首先想到的是使用ISagaPersister,即通过id 检索saga,然后调用命令,然后使用ISagaPersister 将saga 持久化回数据存储区(负责乐观锁定)。对此有什么想法吗?
这个问题有其他解决方案吗?
【问题讨论】:
标签: microservices domain-driven-design nservicebus