
entry-point.sqs.sqs-config.mustache Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of scaffold-clean-architecture Show documentation
Show all versions of scaffold-clean-architecture Show documentation
Gradle plugin to create a clean application in Java that already works, It follows our best practices!
package {{package}}.sqs.listener.config;
import {{package}}.sqs.listener.helper.SQSListener;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain;
import software.amazon.awssdk.auth.credentials.ContainerCredentialsProvider;
import software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider;
import software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider;
import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
import software.amazon.awssdk.auth.credentials.SystemPropertyCredentialsProvider;
import software.amazon.awssdk.auth.credentials.WebIdentityTokenFileCredentialsProvider;
{{#metrics}}
import software.amazon.awssdk.metrics.MetricPublisher;
{{/metrics}}
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sqs.SqsAsyncClient;
import software.amazon.awssdk.services.sqs.model.Message;
import java.net.URI;
import java.util.function.Consumer;
@Configuration
public class SQSConfig {
@Bean
public SQSListener sqsListener(SqsAsyncClient client, SQSProperties properties, Consumer consumer) {
return SQSListener.builder()
.client(client)
.properties(properties)
.consumer(consumer)
.build()
.start();
}
{{#metrics}}
@Bean
public SqsAsyncClient configSqs(SQSProperties properties, MetricPublisher publisher) {
return SqsAsyncClient.builder()
.endpointOverride(resolveEndpoint(properties))
.region(Region.of(properties.getRegion()))
.overrideConfiguration(o -> o.addMetricPublisher(publisher))
.credentialsProvider(getProviderChain())
.build();
}
{{/metrics}}
{{^metrics}}
@Bean
public SqsAsyncClient configSqs(SQSProperties properties) {
return SqsAsyncClient.builder()
.endpointOverride(resolveEndpoint(properties))
.region(Region.of(properties.getRegion()))
.credentialsProvider(getProviderChain())
.build();
}
{{/metrics}}
private AwsCredentialsProviderChain getProviderChain() {
return AwsCredentialsProviderChain.builder()
.addCredentialsProvider(EnvironmentVariableCredentialsProvider.create())
.addCredentialsProvider(SystemPropertyCredentialsProvider.create())
.addCredentialsProvider(WebIdentityTokenFileCredentialsProvider.create())
.addCredentialsProvider(ProfileCredentialsProvider.create())
.addCredentialsProvider(ContainerCredentialsProvider.builder().build())
.addCredentialsProvider(InstanceProfileCredentialsProvider.create())
.build();
}
private URI resolveEndpoint(SQSProperties properties) {
if (properties.getEndpoint() != null) {
return URI.create(properties.getEndpoint());
}
return null;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy