Go
Вы можете передать все, что нужно вашей деятельности, через контекст вашей деятельности.
Вот как это работает:
1) Перед тем, как приступить к работе, задайте для контекста все, что вам нужно, в качестве значения (ниже приведен код, в котором вы настраиваете своего работника):
myThriftClient := ... // create my thrift client
myContext := context.WithValue(context.Background(), "my_thrift_client", myThriftClient)
2) Используйте контекст, созданный на шаге 1, в качестве BackgroundActivityContext параметров работника, которые вы используете для запуска работника:
workerOptions := cadence.WorkerOptions{
MetricsScope: myScope,
Logger: myLogger,
BackgroundActivityContext: myContext,
}
worker := cadence.NewWorker(service, domain, taskList, workerOptions)
3) В коде своей деятельности извлеките свой клиент Thrift изконтекст:
func MyActivity(ctx context.Context) error {
myThriftClient := ctx.Value("my_thrift_client").(ThriftClient)
// now you can make thrift calls using myThriftClient
}
Java
Worker.registerActivityImplementations
принимает экземпляр объекта действия. Таким образом, любые зависимости могут быть связаны с этим объектом до того, как он будет зарегистрирован рабочим.
Worker.Factory factory = new Worker.Factory(DOMAIN);
Worker worker = factory.newWorker(TASK_LIST);
// Initialize activities instance with all its dependencies
MyActivities activities = new MyActivitiesImpl(dbPool, serviceAClient);
worker.registerActivitiesImplementations(activities);
// Start listening to the workflow and activity task lists.
factory.start();