有没有办法将 nestjs cqrs 与 rabbitmq 事件一起使用 bus/queue。从命令中分派微服务处理的事件是否反模式?
Is there a way to use nestjs cqrs with rabbitmq event bus/queue. And is it anti-pattern to dispatch events handled by microservice from commands?
我正在阅读 nestjs 文档,似乎没有办法使用其他内置于 eventbus 的东西。现在假设我的 cqrs 事件想要使用 rabbitmq 与微服务进行通信。所以 2 个问题:
- 是否可以调度将队列发送到外部事件总线的事件?
- 从ddd的角度来看还好吗?那我应该寄到哪里呢?从域层调度?然后感兴趣的各方(微服务)可以收听和写入他们自己的数据库部分或其他任何内容。
如果你能在人类层面上解释一下,我是 cqrs 的 ddd 新手。很抱歉,如果这是一个常见问题,但它也与 nestjs 有关,所以我需要一些说明。
谢谢
集成事件应该用于通知外部服务。一个好的做法是使外部事件总线(集成总线)独立于任何微服务。关于 2 个问题:
- 应该可以使用 nestjs 将事件发送到外部总线。例如:编写一个域事件处理程序来创建一个集成事件并分派它。您可以创建一个新的 IntegrationBus 接口并以任何适合的技术实现它。
- 从DDD的角度来看肯定是可以的。上下文映射(不同上下文如何共享数据)是 DDD 战略模式的一部分。通常集成事件在应用层发布,在某些情况下在基础设施层发布会更方便。
以下几篇文章更详细地介绍了域和集成事件:
我正在阅读 nestjs 文档,似乎没有办法使用其他内置于 eventbus 的东西。现在假设我的 cqrs 事件想要使用 rabbitmq 与微服务进行通信。所以 2 个问题:
- 是否可以调度将队列发送到外部事件总线的事件?
- 从ddd的角度来看还好吗?那我应该寄到哪里呢?从域层调度?然后感兴趣的各方(微服务)可以收听和写入他们自己的数据库部分或其他任何内容。 如果你能在人类层面上解释一下,我是 cqrs 的 ddd 新手。很抱歉,如果这是一个常见问题,但它也与 nestjs 有关,所以我需要一些说明。
谢谢
集成事件应该用于通知外部服务。一个好的做法是使外部事件总线(集成总线)独立于任何微服务。关于 2 个问题:
- 应该可以使用 nestjs 将事件发送到外部总线。例如:编写一个域事件处理程序来创建一个集成事件并分派它。您可以创建一个新的 IntegrationBus 接口并以任何适合的技术实现它。
- 从DDD的角度来看肯定是可以的。上下文映射(不同上下文如何共享数据)是 DDD 战略模式的一部分。通常集成事件在应用层发布,在某些情况下在基础设施层发布会更方便。
以下几篇文章更详细地介绍了域和集成事件: