我正在开发一个ASP.NET Web API项目。据我所知,IIS启动一个进程,该进程有一个线程池,用于处理Web请求的线程。我的域对象将引发域事件,以便应用程序服务可以订阅。如果域事件都是同步的,则此工作正常。在这种情况下,事件处理程序在与域事件发布者相同的线程中执行。现在,一些域事件将被发布到消息队列中,以便以后可以异步处理。
我的问题是,我希望消息队列订户(处理域事件)是相同的应用程序服务。我将域事件使用者限制为应用程序服务和域服务(我认为这是一个很好的DDD实践)。所以事件处理程序,无论是同步还是异步,都应该看起来无动于衷。但是,对于大多数消息队列应用程序,发布者和订阅者通常是不同的进程我如何能够同时处理(与发布者处于同一进程中)或异步处理域事件的单个应用程序服务层(在与发布者不同的进程中)?
我唯一的解决方案(我不太喜欢)是让另一个控制台应用程序使用相同的应用程序服务代码,并在不同的进程中运行以从消息队列中读取域事件。我正在寻找一个更清洁的替代品,如果有的话。感谢。