我正在这里开发一个 Azure Service Fabric 应用程序,其中某些参与者需要按需接收来自其他服务的 ping/hook。该应用程序是一种事件分发引擎,旨在像这样工作:
- 一个事件路由器参与者,它可以接收一个事件,然后负责将该事件分发给该事件类型的所有订阅者。
- 0..N 个事件订阅参与者,它们需要以某种方式通知路由器他们希望订阅什么类型的事件以及他们希望它们如何传递(同步或异步)。
- 当事件路由器 Actor 接收到 类型的事件时
MyEvent
,它将识别哪些订阅者正在侦听以及他们希望如何传递事件。对于异步传递,将在 Azure 服务总线主题中弹出一条消息。但是,对于同步交付,路由器参与者将直接调用订阅参与者的订阅方法,等待他们的响应。
其中大部分是相当直截了当的,但我不完全确定我将如何实现这些事件的同步传递。我不希望事件路由器参与者以任何方式知道参与者订阅事件的任何内部结构 - 但是对于当前的ActorProxy
实现和类似的实现,需要访问接口才能调用其他参与者的方法。
假设我订阅了一个事件类型,通知事件路由器我的地址是fabric:/MyApp/MyEventSubscriberActor
并且我想要订阅MyEvent
。在 Service Fabric API 中是否有任何明智的方法我可以在没有的情况下以编程方式调用该参与者上的方法(例如OnEventAsync(MyEvent ev)
使用该ActorProxy.Create<IMyEventSubscriberActor>()
方法?这些 API 的源代码似乎并不公开,所以我没有直接的检查方法这是如何在幕后完成的。