Dependency injection AKKA中的动态依赖注入

Dependency injection AKKA中的动态依赖注入,dependency-injection,akka,Dependency Injection,Akka,我想知道是否有处理动态依赖注入的模式 这涉及到我们有监督层级的情况。假设我有一个依赖于服务c的服务Z,服务c是a->b->c层次结构的一部分 很明显,Z不拥有C,但希望使用C 在我看来,Z需要提前知道这个层次结构。从某种意义上说,这将破坏依赖注入的所有目的。我不想让Z知道这种等级制度。将来可能会改变 所以我想知道这类事情通常是如何运作的 我正在考虑使用一些配置文件,在那里可以设置此类信息。换句话说,系统的体系结构在参与者中不是硬连线的,而是在配置中提供的,参与者可以使用配置请求他所需的服务 我有

我想知道是否有处理动态依赖注入的模式

这涉及到我们有监督层级的情况。假设我有一个依赖于服务c的服务Z,服务c是a->b->c层次结构的一部分

很明显,Z不拥有C,但希望使用C

在我看来,Z需要提前知道这个层次结构。从某种意义上说,这将破坏依赖注入的所有目的。我不想让Z知道这种等级制度。将来可能会改变

所以我想知道这类事情通常是如何运作的


我正在考虑使用一些配置文件,在那里可以设置此类信息。换句话说,系统的体系结构在参与者中不是硬连线的,而是在配置中提供的,参与者可以使用配置请求他所需的服务

我有点迷路了。为什么不能用普通的依赖注入给Z一个C的引用呢?因为C是由B创建的,B是由A创建的。我没有一个ActorRef到C。也可以想象C故障,B停止它并重新创建一个新的,通过监控策略,Z需要有新的ActorRef。因此依赖本质上是动态的。无论何时,当您需要与受监督的参与者对话,并且可能会失败并被重新创建时,您都具有这种动态依赖关系。我管理这种情况的一种方法是为参与者提供一个类型,然后使用EventBus,它允许感兴趣的参与者订阅以侦听特定参与者类型的事件。在您的情况下,无论何时创建C,C都会将其类型和ActorRef发布到总线上,而Z会收到消息,因为它被订阅以侦听类型C参与者。如果C在Z之前创建,则您可以切换它,以便Z根据需要在总线上显示一条消息,表示它对C参与者感兴趣。然后,C可以订阅以侦听这些消息,并在必要时响应这些消息,以便向相关方公开其ActorRef