按部署位置配置Service Fabric actor和服务逻辑

时间:2015-11-25 15:34:16

标签: azure-service-fabric

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文件中的自定义部分是答案,那么演员/服务如何知道它所在的环境?

1 个答案:

答案 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指定应用程序/特定于环境的值。