将动态生成的端口从一个服务传递到同一应用程序中的另一个服务

Posted

技术标签:

【中文标题】将动态生成的端口从一个服务传递到同一应用程序中的另一个服务【英文标题】: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 创建的端口(通过它的端点声明)。该信息是否传递给服务?是否可以作为参数传递,或者是否有其他机制。

感谢您的帮助

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

那么,我可以使用 FabricClient 作为 ServiceB 设置/运行命令的一部分吗?是否可以保证 ServiceA 会在 ServiceB 之前完成?并且端口不会随着部署而改变?我不确定 SF Remoting 是否会有所帮助。我正在使用 SF 来编排运行具有嵌入式 Akka 节点的应用程序,并试图让它们找到另一个。我希望主机的端口可以传递给其他服务,但这些服务不会以 Manifest 粒度公开为服务 不能保证服务 A 或 B 在另一个启动时运行。很有可能它会在不久的将来变得活跃。端口变化是由端点变化引起的,可以使用fabricClient.ServiceManager.ServiceNotificationFilterMatched监控。

以上是关于将动态生成的端口从一个服务传递到同一应用程序中的另一个服务的主要内容,如果未能解决你的问题,请参考以下文章

将数据从一个函数传递到同一个 Angular 组件中的另一个函数

如何将变量的值从一个 div 传递到同一模板中的另一个 div?

将数据从一个视图控制器传递到同一视图上的另一个视图控制器

将 Ansible 变量从一个角色(在一个主机上运行)传递给在同一剧本中的另一台主机上运行的另一个角色

如何将 php 变量传递给同一页面中的另一个表单?

如何将文件从一个应用程序传输到同一 iOS 设备中的另一个应用程序?