2017-07-11 96 views
0

我在Azure上使用Service Fabric来处理工作中的项目,简而言之,我有一个服务,其功能是从IoT Hub读取数据。使用服务结构中的参数创建服务实例

就目前而言,该服务是从32个分区同时读取数据(多线程),但我试图将其重构为每个分区的一个服务实例。问题是我找不到一种方法来创建32个服务实例并通知它应该读取的Hub分区的每个实例(参数可能?)。

如果需要,我可以提供代码示例,但我觉得这个问题很明显。

+0

为什么不用32个分区创建一个有状态的服务?服务中的每个分区都将从您的物联网集线器上的一个分区读取。另一个选项是具有32个实例的应用程序。您可以将这32个实例放在部分中 - 每个实例都需要一个唯一的名称,例如结构:/ MyApp/Service01,结构:/ MyApp/Service02等 – Dismissile

+0

其实你可能甚至不需要使用有状态的服务。您可以使用32个实例执行常规无状态服务。 – Dismissile

+0

@Dismissile你的分区的想法工作!随意发布答案,我会接受它作为最好的。 –

回答

0

您可以使用32个分区创建一个有状态的服务。服务中的每个分区都将从您的物联网集线器中的单个分区读取。你也可以做为一个无状态的服务,它是一个有32个实例的后台工作者(不是web api)。您需要一些协调哪个实例/分区与每个IoT分区进行通信的方式。

如果你坚持有32个服务实例,那么你只需要确保每个服务实例都有一个唯一的名称。您可以将这些服务放在ApplicationManifest的部分:

<DefaultServices> 
    <Service Name="Service01"> 
     <StatelessService ServiceTypeName="MyServiceType" InstanceCount="1"> 
      <SingletonPartition /> 
     </StatelessService> 
    </Service> 
    <Service Name="Service02"> 
     <StatelessService ServiceTypeName="MyServiceType" InstanceCount="1"> 
      <SingletonPartition /> 
     </StatelessService> 
    </Service> 
    ... 
</DefaultServices> 
相关问题