事件驱动的体系结构在同一个应用程序中具有向自己发送事件/命令的组件是否常见?(请看下面的图片)
我在工作中遇到了这种奇怪的情况,它似乎不太对。该组件发送给自身的事件/命令示例:FILE_ARRIVED, PROCESS_FILE, FILE_PROCESSED
我显然不是事件驱动架构方面的专家。实际上,这是第一个"想要成为"的人。我为其提供服务的事件驱动系统。但我真的很想听听你对此的看法。谢谢你。
组件
首先声明:在不了解您的应用程序域的详细信息以及服务边界是如何划分的情况下,我们无法针对您的具体情况给您任何建议。例如,服务边界可能选择得不好,但作者选择这种设计也可能有很好的理由。
这里一般要考虑两件事:
-
一般来说,在内部使用事件驱动方法的组件不会是一种罕见的模式——虽然事件驱动架构以解决微服务分布式系统中的通信问题而闻名,但它们在各种软件架构中以不同的形式被使用。一些例子是回调注册和/或用于进程间通信的消息管道/队列。
-
这就引出了第二个问题——什么时候使用外部事件总线的网络通信开销是合理的?当然,主要是当消息/事件被外部组件使用时,但另一个原因可能是当事件总线被用作其他暂态组件的持久形式时。例如,在不允许消息/事件丢失的情况下,例如在崩溃、硬件故障等情况下,有动机将它们尽快发送到具有持久性的系统。