2017-02-07 8 views
0

Я создаю доказательство концептуального приложения с использованием Azure Service Fabric и хотел бы инициализировать несколько «демонстрационных» пользователей в моем кластере при его запуске. Я нашел несколько кратких статей, в которых рассказывается о загрузке данных из DataPackage, в котором показано, как загружать сами данные, но ничего о том, как создавать актеров из этих данных.Инициализация сервисных тканей Актеры, использующие DataPackages

Это можно сделать с помощью DataPackages или есть ли лучший способ сделать это?

ответ

0

Пакеты данных - это просто непрозрачные каталоги с любыми файлами, которые вы хотите там, для каждого развертывания. Он не загружает и не обрабатывает сами данные, вам нужно сделать все тяжелое поднятие, поскольку только ваш код знает, что означают данные. Например, если у вас есть пакет данных с именем «SvcData», он будет развертывать файлы в этом пакете во время развертывания. Если у вас есть файл StaticDataMaster.json в этом каталоге, вы сможете получить к нему доступ при запуске службы (либо в вашем акторе, либо в другом месте). Например:

// get the data package 
var DataPkg = ServiceInitializationParameters.CodePackageActivationContext. 
    GetDataPackageObject("SvcData"); 

// fabric doesn't load data it is just manages for you. data is opaque to Fabric 
var customDataFilePath = DataPkg.Path + @"\StaticDataMaster.json"; 

// TODO: read customDatafilePath, etc. 
+0

Право, я понимаю, что это всего лишь файл в каталоге, который я могу загрузить (как показывает ваш пример выше). Вопрос заключается в том, как создавать актеры из этих демо-данных, когда пакет SF развертывается в кластере. Есть ли смысл в этом процессе, который я могу связать с этим, позволил бы мне создавать и инициализировать демонстрационных актеров? Можно ли это сделать внутри конструктора Actor, метода OnActivateAsync (но это срабатывает только при активации актера, это слишком поздно?) – KyKo

+0

Вам нужно будет иметь службу, которая просматривала данные в пакете данных и создавала участников вызывая их с помощью ActorProxy. Нет встроенного механизма автоматического создания отдельных участников. – masnider

+0

@kyko Актер имеет интерфейс/контракт. Вы можете добавить метод для ввода данных. возможно, вы можете напрямую использовать диспетчер состояний. В какой-то момент вам нужно попросить актера что-то сделать. Именно в этот момент актер создан. Таким образом, получение данных через конструктор, вероятно, не сработает. Ничто не мешает вам передавать данные через метод на актера. –

 Смежные вопросы

  • Нет связанных вопросов^_^