【问题标题】:Pass a dynamically-generated port from one Service to another Service in the same application将动态生成的端口从一个服务传递到同一应用程序中的另一个服务
【发布时间】:2019-08-29 06:24:16
【问题描述】:

我有一个包含两个服务的 Service Fabric 应用程序。两者都是无状态服务,并且只有一个服务实例。

在服务 A 中,我想在 ServiceManifest.xml 的资源部分定义一个端点。我不在乎我得到什么端口,我只需要一个,我想从 Service Fabric 获取它,这样它就可以确保它可以在 Service Fabric 集群管理的虚拟机之间访问。

在服务 B 中,我想传递为服务 A 创建的端口,以便它可以使用它与服务 A 交互。我将使用 Service Fabric DNS 名称定义这两个服务,因此服务 B 将知道主机服务 A(无论它在哪里运行)。但是服务 B 还需要为服务 A 创建的端口(通过它的端点声明)。该信息是否传递给服务?是否可以作为参数传递,或者是否有其他机制。

感谢您的帮助

【问题讨论】:

    标签: azure-service-fabric


    【解决方案1】:

    您可以使用FabricClient 上的QueryManager 来发现有关其他服务端点的信息。示例here

    出于好奇,您不能为此使用SF remoting 吗?

    【讨论】:

    • 那么,我可以使用 FabricClient 作为 ServiceB 设置/运行命令的一部分吗?是否可以保证 ServiceA 会在 ServiceB 之前完成?并且端口不会随着部署而改变?我不确定 SF Remoting 是否会有所帮助。我正在使用 SF 来编排运行具有嵌入式 Akka 节点的应用程序,并试图让它们找到另一个。我希望主机的端口可以传递给其他服务,但这些服务不会以 Manifest 粒度公开为服务
    • 不能保证服务 A 或 B 在另一个启动时运行。很有可能它会在不久的将来变得活跃。端口变化是由端点变化引起的,可以使用fabricClient.ServiceManager.ServiceNotificationFilterMatched监控。
    猜你喜欢
    • 1970-01-01
    • 2012-08-19
    • 2014-04-16
    • 2017-05-06
    • 1970-01-01
    • 2019-08-08
    • 2021-10-14
    • 2020-04-25
    • 2011-05-06
    相关资源
    最近更新 更多