From be27b8eea457f66b685aff2c9cff9c682914df6d Mon Sep 17 00:00:00 2001 From: musketyr Date: Mon, 6 Jun 2022 10:16:46 +0200 Subject: [PATCH 1/4] BOM for Micronaut Worker --- build.gradle | 2 ++ platforms/micronaut-worker-bom/micronaut-worker-bom.gradle | 0 settings.gradle | 5 ++++- 3 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 platforms/micronaut-worker-bom/micronaut-worker-bom.gradle diff --git a/build.gradle b/build.gradle index 52971fd4..83c123e2 100644 --- a/build.gradle +++ b/build.gradle @@ -226,6 +226,8 @@ gradleProjects { dependencies { testImplementation group: 'org.spockframework', name: 'spock-core', version: spockVersion } + + project(':micronaut-worker-bom').dependencies.constraints.api it } dir('examples') { diff --git a/platforms/micronaut-worker-bom/micronaut-worker-bom.gradle b/platforms/micronaut-worker-bom/micronaut-worker-bom.gradle new file mode 100644 index 00000000..e69de29b diff --git a/settings.gradle b/settings.gradle index 5b29ad7e..deca0680 100644 --- a/settings.gradle +++ b/settings.gradle @@ -51,7 +51,7 @@ gradleEnterprise { rootProject.name = 'micronaut-worker-root' projects { - directories = ['libs', 'docs', 'examples'] + directories = ['libs', 'docs', 'examples', 'platforms'] plugins { dir('docs') { @@ -62,5 +62,8 @@ projects { id 'java-library' id 'groovy' } + dir('platforms') { + id 'java-platform' + } } } From a769a678faa4d92b72a5f78a1f8de3581f7ba5bb Mon Sep 17 00:00:00 2001 From: musketyr Date: Tue, 17 Jan 2023 09:23:36 +0100 Subject: [PATCH 2/4] using Environment instead of ConversionService as a workaround to https://github.com/micronaut-projects/micronaut-core/issues/7948 --- .../agorapulse/worker/sqs/v1/SqsQueuesFactory.java | 4 +--- .../agorapulse/worker/sqs/v2/SqsQueuesFactory.java | 4 +--- .../java/com/agorapulse/worker/local/LocalQueues.java | 11 +++++------ .../worker/processor/MethodJobProcessor.java | 10 +++++----- 4 files changed, 12 insertions(+), 17 deletions(-) diff --git a/libs/micronaut-worker-queues-sqs-v1/src/main/java/com/agorapulse/worker/sqs/v1/SqsQueuesFactory.java b/libs/micronaut-worker-queues-sqs-v1/src/main/java/com/agorapulse/worker/sqs/v1/SqsQueuesFactory.java index 5e225d35..708da6d9 100644 --- a/libs/micronaut-worker-queues-sqs-v1/src/main/java/com/agorapulse/worker/sqs/v1/SqsQueuesFactory.java +++ b/libs/micronaut-worker-queues-sqs-v1/src/main/java/com/agorapulse/worker/sqs/v1/SqsQueuesFactory.java @@ -27,7 +27,6 @@ import io.micronaut.context.annotation.Factory; import io.micronaut.context.annotation.Requires; import io.micronaut.context.env.Environment; -import io.micronaut.core.convert.ConversionService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,7 +47,6 @@ public JobQueues sqsQueues( AWSCredentialsProvider provider, ObjectMapper mapper, SimpleQueueService service, - Optional> conversionService, Environment environment ) { try { @@ -60,7 +58,7 @@ public JobQueues sqsQueues( } else if (LOGGER.isInfoEnabled()) { LOGGER.info("AWS SDK is not authenticated correctly, Using local job queues"); } - return new LocalQueues(conversionService); + return new LocalQueues(environment); } } diff --git a/libs/micronaut-worker-queues-sqs-v2/src/main/java/com/agorapulse/worker/sqs/v2/SqsQueuesFactory.java b/libs/micronaut-worker-queues-sqs-v2/src/main/java/com/agorapulse/worker/sqs/v2/SqsQueuesFactory.java index 998cf9cb..de2a90fa 100644 --- a/libs/micronaut-worker-queues-sqs-v2/src/main/java/com/agorapulse/worker/sqs/v2/SqsQueuesFactory.java +++ b/libs/micronaut-worker-queues-sqs-v2/src/main/java/com/agorapulse/worker/sqs/v2/SqsQueuesFactory.java @@ -25,7 +25,6 @@ import io.micronaut.context.annotation.Factory; import io.micronaut.context.annotation.Requires; import io.micronaut.context.env.Environment; -import io.micronaut.core.convert.ConversionService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; @@ -48,7 +47,6 @@ public JobQueues sqsQueues( AwsCredentialsProvider provider, ObjectMapper mapper, SimpleQueueService service, - Optional> conversionService, Environment environment ) { try { @@ -60,7 +58,7 @@ public JobQueues sqsQueues( } else if (LOGGER.isInfoEnabled()) { LOGGER.info("AWS SDK is not authenticated correctly, Using local job queues"); } - return new LocalQueues(conversionService); + return new LocalQueues(environment); } } diff --git a/libs/micronaut-worker/src/main/java/com/agorapulse/worker/local/LocalQueues.java b/libs/micronaut-worker/src/main/java/com/agorapulse/worker/local/LocalQueues.java index fadecdae..1736eb7f 100644 --- a/libs/micronaut-worker/src/main/java/com/agorapulse/worker/local/LocalQueues.java +++ b/libs/micronaut-worker/src/main/java/com/agorapulse/worker/local/LocalQueues.java @@ -19,13 +19,12 @@ import com.agorapulse.worker.queue.JobQueues; import io.micronaut.context.annotation.Secondary; -import io.micronaut.core.convert.ConversionService; +import io.micronaut.context.env.Environment; import io.micronaut.core.type.Argument; import javax.inject.Named; import javax.inject.Singleton; import java.time.Duration; -import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedDeque; import java.util.concurrent.ConcurrentMap; @@ -37,10 +36,10 @@ public class LocalQueues implements JobQueues { private final ConcurrentMap> queues = new ConcurrentHashMap<>(); - private final ConversionService conversionService; + private final Environment environment; - public LocalQueues(Optional> conversionService) { - this.conversionService = conversionService.orElse(ConversionService.SHARED); + public LocalQueues(Environment environment) { + this.environment = environment; } @Override @@ -51,7 +50,7 @@ public void readMessages(String queueName, int maxNumberOfMessages, Duration } for (int i = 0; i < maxNumberOfMessages && !objects.isEmpty(); i++) { - action.accept(conversionService.convertRequired(objects.removeFirst(), argument)); + action.accept(environment.convertRequired(objects.removeFirst(), argument)); } } diff --git a/libs/micronaut-worker/src/main/java/com/agorapulse/worker/processor/MethodJobProcessor.java b/libs/micronaut-worker/src/main/java/com/agorapulse/worker/processor/MethodJobProcessor.java index 2b3d61d0..10503da8 100644 --- a/libs/micronaut-worker/src/main/java/com/agorapulse/worker/processor/MethodJobProcessor.java +++ b/libs/micronaut-worker/src/main/java/com/agorapulse/worker/processor/MethodJobProcessor.java @@ -26,9 +26,9 @@ import com.agorapulse.worker.configuration.MutableJobConfiguration; import io.micronaut.context.ApplicationContext; import io.micronaut.context.BeanContext; +import io.micronaut.context.env.Environment; import io.micronaut.context.processor.ExecutableMethodProcessor; import io.micronaut.core.annotation.AnnotationValue; -import io.micronaut.core.convert.ConversionService; import io.micronaut.core.naming.NameUtils; import io.micronaut.core.util.StringUtils; import io.micronaut.inject.BeanDefinition; @@ -73,7 +73,7 @@ public class MethodJobProcessor implements ExecutableMethodProcessor { private final JobManager jobManager; private final ApplicationConfiguration applicationConfiguration; private final JobScheduler jobScheduler; - private final ConversionService conversionService; + private final Environment environment; private final WorkerConfiguration workerConfiguration; /** @@ -93,7 +93,7 @@ public MethodJobProcessor( JobManager jobManager, ApplicationConfiguration applicationConfiguration, JobScheduler jobScheduler, - Optional> optionalConversionService, + Environment environment, WorkerConfiguration workerConfiguration ) { this.beanContext = beanContext; @@ -102,7 +102,7 @@ public MethodJobProcessor( this.jobManager = jobManager; this.applicationConfiguration = applicationConfiguration; this.jobScheduler = jobScheduler; - this.conversionService = optionalConversionService.orElse(ConversionService.SHARED); + this.environment = environment; this.workerConfiguration = workerConfiguration; } @@ -246,7 +246,7 @@ private String extractQueueNameFromMethod(ExecutableMethod method) { } private Duration convertDuration(String jobName, String durationString, String humanReadableProperty) { - Optional converted = conversionService.convert(durationString, Duration.class); + Optional converted = environment.convert(durationString, Duration.class); if (converted.isPresent()) { return converted.get(); From e015eaad6f16b6eb7ccc1df83d5d6d59d17e04c8 Mon Sep 17 00:00:00 2001 From: musketyr Date: Tue, 17 Jan 2023 09:41:52 +0100 Subject: [PATCH 3/4] updated tests --- .../com/agorapulse/worker/sqs/v1/SqsQueuesFactorySpec.groovy | 4 ++-- .../com/agorapulse/worker/sqs/v2/SqsQueuesFactorySpec.groovy | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libs/micronaut-worker-queues-sqs-v1/src/test/groovy/com/agorapulse/worker/sqs/v1/SqsQueuesFactorySpec.groovy b/libs/micronaut-worker-queues-sqs-v1/src/test/groovy/com/agorapulse/worker/sqs/v1/SqsQueuesFactorySpec.groovy index ee44c84f..b1e740a2 100644 --- a/libs/micronaut-worker-queues-sqs-v1/src/test/groovy/com/agorapulse/worker/sqs/v1/SqsQueuesFactorySpec.groovy +++ b/libs/micronaut-worker-queues-sqs-v1/src/test/groovy/com/agorapulse/worker/sqs/v1/SqsQueuesFactorySpec.groovy @@ -37,12 +37,12 @@ class SqsQueuesFactorySpec extends Specification { void 'return sqs if there is no issue'() { expect: - factory.sqsQueues(provider, mapper, simpleQueueService, Optional.empty(), environment) instanceof SqsQueues + factory.sqsQueues(provider, mapper, simpleQueueService, environment) instanceof SqsQueues } void 'return local if there is issue'() { when: - factory.sqsQueues(provider, mapper, simpleQueueService, Optional.empty(), environment) instanceof LocalQueues + factory.sqsQueues(provider, mapper, simpleQueueService, environment) instanceof LocalQueues then: 1 * provider.credentials >> { throw new SdkClientException('login failed') } diff --git a/libs/micronaut-worker-queues-sqs-v2/src/test/groovy/com/agorapulse/worker/sqs/v2/SqsQueuesFactorySpec.groovy b/libs/micronaut-worker-queues-sqs-v2/src/test/groovy/com/agorapulse/worker/sqs/v2/SqsQueuesFactorySpec.groovy index 143f619e..fb72ed18 100644 --- a/libs/micronaut-worker-queues-sqs-v2/src/test/groovy/com/agorapulse/worker/sqs/v2/SqsQueuesFactorySpec.groovy +++ b/libs/micronaut-worker-queues-sqs-v2/src/test/groovy/com/agorapulse/worker/sqs/v2/SqsQueuesFactorySpec.groovy @@ -37,12 +37,12 @@ class SqsQueuesFactorySpec extends Specification { void 'return sqs if there is no issue'() { expect: - factory.sqsQueues(provider, mapper, simpleQueueService, Optional.empty(), environment) instanceof SqsQueues + factory.sqsQueues(provider, mapper, simpleQueueService, environment) instanceof SqsQueues } void 'return local if there is issue'() { when: - factory.sqsQueues(provider, mapper, simpleQueueService, Optional.empty(), environment) instanceof LocalQueues + factory.sqsQueues(provider, mapper, simpleQueueService, environment) instanceof LocalQueues then: 1 * provider.resolveCredentials() >> { throw SdkClientException.create('login failed') } From 40784ea851f96c0db6a7e71ecd0e0aec5c945cd4 Mon Sep 17 00:00:00 2001 From: musketyr Date: Tue, 17 Jan 2023 09:57:08 +0100 Subject: [PATCH 4/4] fixed style issues --- .../main/java/com/agorapulse/worker/sqs/v1/SqsQueuesFactory.java | 1 - .../main/java/com/agorapulse/worker/sqs/v2/SqsQueuesFactory.java | 1 - 2 files changed, 2 deletions(-) diff --git a/libs/micronaut-worker-queues-sqs-v1/src/main/java/com/agorapulse/worker/sqs/v1/SqsQueuesFactory.java b/libs/micronaut-worker-queues-sqs-v1/src/main/java/com/agorapulse/worker/sqs/v1/SqsQueuesFactory.java index db1510f5..3f103b7c 100644 --- a/libs/micronaut-worker-queues-sqs-v1/src/main/java/com/agorapulse/worker/sqs/v1/SqsQueuesFactory.java +++ b/libs/micronaut-worker-queues-sqs-v1/src/main/java/com/agorapulse/worker/sqs/v1/SqsQueuesFactory.java @@ -32,7 +32,6 @@ import javax.inject.Named; import javax.inject.Singleton; -import java.util.Optional; @Factory @Requires(classes = { SimpleQueueService.class }, beans = { SimpleQueueService.class, AWSCredentialsProvider.class }) diff --git a/libs/micronaut-worker-queues-sqs-v2/src/main/java/com/agorapulse/worker/sqs/v2/SqsQueuesFactory.java b/libs/micronaut-worker-queues-sqs-v2/src/main/java/com/agorapulse/worker/sqs/v2/SqsQueuesFactory.java index 6c7cc7d4..4dc3f8eb 100644 --- a/libs/micronaut-worker-queues-sqs-v2/src/main/java/com/agorapulse/worker/sqs/v2/SqsQueuesFactory.java +++ b/libs/micronaut-worker-queues-sqs-v2/src/main/java/com/agorapulse/worker/sqs/v2/SqsQueuesFactory.java @@ -32,7 +32,6 @@ import javax.inject.Named; import javax.inject.Singleton; -import java.util.Optional; @Factory @Requires(classes = { SimpleQueueService.class }, beans = { SimpleQueueService.class, AwsCredentialsProvider.class })