在過去的幾年中,Eric Evans已經認識到他的DDD模式的更新:域名事件(又名外部事件概念)。
事件採購模式中的內部事件是我們一直關注的內容,例如您的示例中的UserCreatedEvent。使用IEvent標記界面保持這些顯式。
儘管在事件總線上發佈IEvents,但IDomainEvents對更大的外部到域通知的影響更大,因爲它們不會影響每個說法的聚合狀態。
所以......
CreateUser (ICommand)
^- CreateUserCommandHandler
UserCreated (IEvent)
^- UserCreatedEventHandler
SendNewUserEmail (ICommand)
^- SendNewUserEmailCommandHandler
NewUserEmailSent (IDomainEvent)
^- UserRegistrationService or some other AC
我仍然很新的事件採購自己;但是,我猜你可以在總線上登錄UserRegistrationService
來偵聽SendNewUserEmail ICommand。
無論你走到哪裏,我都會集中精力爲發送電子郵件創建其他命令/事件併發送電子郵件。然後,稍後您可以查看事務日誌,瞭解它的排隊時間,發送時間,發送時是否有重試,同時發送了多少時間,是否會影響時間延遲(日期時間差異)顯示任何瓶頸?,安裝一個發送電子郵件的隊列,並將其分解爲一個較小的獨立服務等等。
這裏的假設是您將發佈事件,而不是將它發送到每個端點。真的嗎? – 2012-08-10 12:42:54
是的,這是正確的,我發佈和執行命令後的事件。 Udi Dahan指出,一個命令/命令處理程序對應該負責發起一個事件,並且只負責該特定事件。沒有其他雙人應該射擊那個事件。 – 2012-08-13 12:52:05
假設事件在成功寫入時發佈,我沒有看到有幾個端點爲了不同的目的而提取和處理事件的問題。 – 2012-08-13 12:58:12