0
我在Azure上使用Service Fabric来处理工作中的项目,简而言之,我有一个服务,其功能是从IoT Hub读取数据。使用服务结构中的参数创建服务实例
就目前而言,该服务是从32个分区同时读取数据(多线程),但我试图将其重构为每个分区的一个服务实例。问题是我找不到一种方法来创建32个服务实例并通知它应该读取的Hub分区的每个实例(参数可能?)。
如果需要,我可以提供代码示例,但我觉得这个问题很明显。
我在Azure上使用Service Fabric来处理工作中的项目,简而言之,我有一个服务,其功能是从IoT Hub读取数据。使用服务结构中的参数创建服务实例
就目前而言,该服务是从32个分区同时读取数据(多线程),但我试图将其重构为每个分区的一个服务实例。问题是我找不到一种方法来创建32个服务实例并通知它应该读取的Hub分区的每个实例(参数可能?)。
如果需要,我可以提供代码示例,但我觉得这个问题很明显。
您可以使用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>
为什么不用32个分区创建一个有状态的服务?服务中的每个分区都将从您的物联网集线器上的一个分区读取。另一个选项是具有32个实例的应用程序。您可以将这32个实例放在部分中 - 每个实例都需要一个唯一的名称,例如结构:/ MyApp/Service01,结构:/ MyApp/Service02等 –
Dismissile
其实你可能甚至不需要使用有状态的服务。您可以使用32个实例执行常规无状态服务。 – Dismissile
@Dismissile你的分区的想法工作!随意发布答案,我会接受它作为最好的。 –