Azure Service Fabric应用程序有一个ApplicationParameters文件夹,其中包含针对不同部署位置的XML配置文件。这些文件中的设置似乎处理所包含的actor和服务的实例/分区的数量;我还没有看到影响演员或服务逻辑的这些设置的示例。
此外,可靠的服务和可靠的参与者可以在ServiceManifest.xml文件中指定配置包,该文件指向包含Settings.xml文件的文件夹。您可以在Settings.xml中创建自定义配置部分,并通过ServiceInitializationParameters.CodePackageActivationContext.GetConfigurationPackageObject()通过服务&actor的ConfigurationPackage获取对它们的访问权限。与应用程序级别的配置不同,这些配置文件似乎不容易针对特定的部署位置。
通过针对部署位置的配置文件定制actor / service逻辑的正确方法是什么?例如,如果您的服务依赖于具有用于开发与生产环境的不同URL的外部API,那么如何使用配置文件轻松建立这些URL?如果ApplicationParameters文件是答案,那么如何以编程方式从actor或服务访问此信息?如果Settings.xml文件中的自定义部分是答案,那么演员/服务如何知道它所在的环境?
答案 0 :(得分:4)
请点击此处的“每个环境服务配置设置”部分:Managing application parameters for multiple environments。
简而言之,您可以在将服务清单导入应用程序清单时创建ConfigOverride
。假设您在Stateful1
服务的Settings.xml中具有以下设置:
<Section Name="MyConfigSection">
<Parameter Name="MaxQueueSize" Value="25" />
</Section>
在应用程序清单中,您将指定以下内容:
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="Stateful1Pkg" ServiceManifestVersion="1.0.0" />
<ConfigOverrides>
<ConfigOverride Name="Config">
<Settings>
<Section Name="MyConfigSection">
<Parameter Name="MaxQueueSize" Value="[Stateful1_MaxQueueSize]" />
</Section>
</Settings>
</ConfigOverride>
</ConfigOverrides>
</ServiceManifestImport>
然后,您可以使用应用程序参数为MaxQueueSize
指定应用程序/特定于环境的值。