chore(system): add WorkerJobQueueInterface to properly pass workerId on subscribe

This commit is contained in:
Florian Hussonnois
2025-08-11 18:24:54 +02:00
committed by Florian Hussonnois
parent 31dbecec77
commit 194ae826e5
10 changed files with 50 additions and 44 deletions

View File

@@ -9,11 +9,11 @@ import io.kestra.core.models.templates.Template;
import io.kestra.core.models.triggers.Trigger;
import io.kestra.core.queues.QueueFactoryInterface;
import io.kestra.core.queues.QueueInterface;
import io.kestra.core.queues.WorkerJobQueueInterface;
import io.kestra.core.runners.*;
import io.micronaut.context.ApplicationContext;
import io.micronaut.context.annotation.Bean;
import io.micronaut.context.annotation.Factory;
import io.micronaut.context.annotation.Prototype;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import jakarta.inject.Singleton;
@@ -45,7 +45,7 @@ public class MysqlQueueFactory implements QueueFactoryInterface {
@Singleton
@Named(QueueFactoryInterface.WORKERJOB_NAMED)
@Bean(preDestroy = "close")
public QueueInterface<WorkerJob> workerJob() {
public WorkerJobQueueInterface workerJob() {
return new MysqlWorkerJobQueue(applicationContext);
}

View File

@@ -1,6 +1,7 @@
package io.kestra.runner.mysql;
import io.kestra.core.exceptions.DeserializationException;
import io.kestra.core.queues.WorkerJobQueueInterface;
import io.kestra.core.runners.WorkerJob;
import io.kestra.core.utils.Either;
import io.kestra.jdbc.JdbcWorkerJobQueueService;
@@ -14,22 +15,22 @@ import java.util.function.Consumer;
* This specific queue is used to be able to save WorkerJobRunning for each WorkerJob
*/
@Slf4j
public class MysqlWorkerJobQueue extends MysqlQueue<WorkerJob> {
public class MysqlWorkerJobQueue extends MysqlQueue<WorkerJob> implements WorkerJobQueueInterface {
private final JdbcWorkerJobQueueService jdbcWorkerJobQueueService;
public MysqlWorkerJobQueue(ApplicationContext applicationContext) {
super(WorkerJob.class, applicationContext);
this.jdbcWorkerJobQueueService = applicationContext.getBean(JdbcWorkerJobQueueService.class);
}
@Override
public Runnable receive(String consumerGroup, Class<?> queueType, Consumer<Either<WorkerJob, DeserializationException>> consumer) {
return jdbcWorkerJobQueueService.receive(this, consumerGroup, queueType, consumer);
}
@Override
public void close() throws IOException {
super.close();
jdbcWorkerJobQueueService.close();
}
@Override
public Runnable subscribe(String workerId, String workerGroup, Consumer<Either<WorkerJob, DeserializationException>> consumer) {
return jdbcWorkerJobQueueService.subscribe(this, workerId, workerGroup, consumer);
}
}