我在Azure上使用Service Fabric来处理工作中的项目,简而言之,我有一项服务,其功能是从IoT Hub读取数据。
就目前而言,该服务同时从32个分区读取数据(多个线程),但我正在尝试将其重构为每个分区的一个服务。问题是我找不到一种方法来创建32个服务实例并通知它应该读取的Hub分区的每个实例(参数可能?)。
如果需要,我可以提供代码示例,但我觉得这个问题非常明显。
答案 0 :(得分:0)
您可以使用32个分区创建有状态服务。服务中的每个分区都将从IoT中心的单个分区读取。您也可以将此作为无状态服务执行,该服务是具有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>