C# MediateR 作为临时事件总线
C# MediateR as a temporary Eventbus
我正在使用 DDD 方法和微服务架构实现一个应用程序,我将在 Command1 完成后发布一个事件,然后我需要在事件发布后自动启动 Command2。
我的工作资源有限,因此无法使用 RabbitMq 或其他在线事件服务。
在新资源可用之前,我将继续使用这种方法。
我的应用程序包含两个域,我将把它们都实现为单一服务(它帮助我在它们之间发送事件而无需任何外部事件总线)。通过这种方法,当我有足够的资源时,我可以将主题分成多个服务。
我的问题是,我可以使用 Mediator 订阅事件吗?并在功能中将其替换为真正的事件总线。
我的应用程序是一个 Web 应用程序,使用 Asp.net 内核编写。
MediatR 允许您分离 inproc 系统组件通信,因此我认为可以开发一个处理 inproc 的句柄,然后将此代码更改为仅包含 eventBus.publish(event)
的一行,但请记住 MediatR 是通常用于命令,在这种情况下你必须建模的是事件,所以在开发 inproc 模型时尽量不要有太多的认知偏见;请始终记住,在这种情况下,最终目标是发布事件。
Mediator 仅在进程内。它不能服务于 EventBus 的目的。
EventBus 是服务之间的缓冲区,因此服务不会被事件淹没。使用 Mediator 订阅命令的处理程序将直接收到通知,而不是缓冲区。
这实际上取决于您要实现的目标。如果您使用的是 DDD,那么必须使用有界上下文来定义您的域边界,并且跨域通信必须通过使用某种缓冲区的集成事件来完成。
看看 DDD here
我正在使用 DDD 方法和微服务架构实现一个应用程序,我将在 Command1 完成后发布一个事件,然后我需要在事件发布后自动启动 Command2。 我的工作资源有限,因此无法使用 RabbitMq 或其他在线事件服务。 在新资源可用之前,我将继续使用这种方法。 我的应用程序包含两个域,我将把它们都实现为单一服务(它帮助我在它们之间发送事件而无需任何外部事件总线)。通过这种方法,当我有足够的资源时,我可以将主题分成多个服务。
我的问题是,我可以使用 Mediator 订阅事件吗?并在功能中将其替换为真正的事件总线。
我的应用程序是一个 Web 应用程序,使用 Asp.net 内核编写。
MediatR 允许您分离 inproc 系统组件通信,因此我认为可以开发一个处理 inproc 的句柄,然后将此代码更改为仅包含 eventBus.publish(event)
的一行,但请记住 MediatR 是通常用于命令,在这种情况下你必须建模的是事件,所以在开发 inproc 模型时尽量不要有太多的认知偏见;请始终记住,在这种情况下,最终目标是发布事件。
Mediator 仅在进程内。它不能服务于 EventBus 的目的。
EventBus 是服务之间的缓冲区,因此服务不会被事件淹没。使用 Mediator 订阅命令的处理程序将直接收到通知,而不是缓冲区。
这实际上取决于您要实现的目标。如果您使用的是 DDD,那么必须使用有界上下文来定义您的域边界,并且跨域通信必须通过使用某种缓冲区的集成事件来完成。
看看 DDD here