How to register multiple workers
mainYou can register multiple workers by making multiple calls to TemporalModule.registerWorker or TemporalModule.registerWorkerAsync.
Important: When using multiple workers, you must explicitly specify your activity classes using the activityClasses option. If you do not, the workers may attempt to register all activities marked with @Activity() in the application.
To avoid conflicts or unintended registrations, it is recommended to import dynamic worker modules into the specific modules containing their respective workflows and activities, rather than registering everything in the root AppModule.
// Register the client once at the app level
@Module({
imports: [
TemporalModule.registerClient(),
],
})
export class AppModule {}
// Configure Worker #1
@Module({
imports: [
TemporalModule.registerWorker({
workerOptions: {
taskQueue: 'worker-1',
workflowsPath: require.resolve('./temporal/workflow-1'),
},
activityClasses: [Greeting1Activity],
}),
],
providers: [Greeting1Activity],
})
export class Worker1Module {}
// Configure Worker #2
@Module({
imports: [
TemporalModule.registerWorker({
workerOptions: {
taskQueue: 'worker-2',
workflowsPath: require.resolve('./temporal/workflow-2'),
},
activityClasses: [SomeOtherActivity],
}),
],
providers: [SomeOtherActivity],
})
export class Worker2Module {}