1
在我的應用服務,我有以下用於發佈域事件中的代碼:凡訂閱域事件
var document = await dbContext.Documents.GetAggregateAsync(message.DocumentId);
publisher.SubscribeTo<DocumentOwnerChanged>()
.UsingDelegate(
async a => await messageGateway.DocumentOwnerChanged(1, 1, 1));
document.ChangeOwner(message.OwnerId);
await dbContext.SaveChangesAsync();
await publisher.Publish(document.ReleaseEvents());
我試圖決定我是否喜歡有應用程序服務中發佈事件的這方面的知識或者如果我應該將這個外部化在根的某個地方更高。
想法?
的其他方式感謝你我更喜歡返回/存儲事件,而不是靜態發佈者。 – Marco
吉米的文章很棒。在那篇文章中,我採用了基於他的模式。我唯一的個人質疑是,它允許多個聚合參與單個交易。我已經開始更多地選擇最終的一致性,如果你在覆蓋開始時調用base.Save()調用,然後調度你的事件,那麼Jimmy的文章仍然適用。也就是說,IMO是一種比異步調度更好的解決方案。處理程序可以異步執行,但我想知道是否無法個人發佈事件。 –