Skip to content

Commit e8898c1

Browse files
committed
GH-344 - Polishing.
Switch to DelegatingEventExternalizer APIs changed to return CompletableFuture. Imports, formatting. Drop dependencies not needed.
1 parent d95da87 commit e8898c1

File tree

12 files changed

+172
-186
lines changed

12 files changed

+172
-186
lines changed

pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
<spring.version>6.1.0-RC1</spring.version> <!-- For Javadoc links only -->
4444
<spring-boot.version>3.2.0-RC1</spring-boot.version>
4545
<spring-cloud-aws-bom.version>3.0.2</spring-cloud-aws-bom.version>
46+
4647
</properties>
4748

4849
<developers>

spring-modulith-events/spring-modulith-events-aws-sns/pom.xml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,6 @@
3434
<artifactId>spring-cloud-aws-sns</artifactId>
3535
</dependency>
3636

37-
<dependency>
38-
<groupId>com.fasterxml.jackson.core</groupId>
39-
<artifactId>jackson-databind</artifactId>
40-
<optional>true</optional>
41-
</dependency>
42-
4337
<!-- Test dependencies -->
4438

4539
<dependency>

spring-modulith-events/spring-modulith-events-aws-sns/src/main/java/org/springframework/modulith/events/aws/sns/SnsEventExternalizerConfiguration.java

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@
1818
import io.awspring.cloud.sns.core.SnsNotification;
1919
import io.awspring.cloud.sns.core.SnsOperations;
2020
import io.awspring.cloud.sns.core.SnsTemplate;
21+
22+
import java.util.concurrent.CompletableFuture;
23+
2124
import org.slf4j.Logger;
2225
import org.slf4j.LoggerFactory;
23-
import software.amazon.awssdk.services.sns.model.InvalidParameterException;
24-
2526
import org.springframework.beans.factory.BeanFactory;
2627
import org.springframework.boot.autoconfigure.AutoConfiguration;
2728
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
@@ -30,7 +31,6 @@
3031
import org.springframework.context.annotation.Bean;
3132
import org.springframework.context.expression.BeanFactoryResolver;
3233
import org.springframework.expression.spel.support.StandardEvaluationContext;
33-
import org.springframework.messaging.MessageDeliveryException;
3434
import org.springframework.modulith.events.EventExternalizationConfiguration;
3535
import org.springframework.modulith.events.config.EventExternalizationAutoConfiguration;
3636
import org.springframework.modulith.events.support.BrokerRouting;
@@ -40,6 +40,7 @@
4040
* Auto-configuration to set up a {@link DelegatingEventExternalizer} to externalize events to SNS.
4141
*
4242
* @author Maciej Walkowiak
43+
* @author Oliver Drotbohm
4344
* @since 1.1
4445
*/
4546
@AutoConfiguration
@@ -64,22 +65,17 @@ DelegatingEventExternalizer snsEventExternalizer(EventExternalizationConfigurati
6465
return new DelegatingEventExternalizer(configuration, (target, payload) -> {
6566

6667
var routing = BrokerRouting.of(target, context);
67-
6868
var builder = SnsNotification.builder(payload);
6969
var key = routing.getKey(payload);
70+
7071
// when routing key is set, SNS topic must be a FIFO topic
7172
if (key != null) {
7273
builder.groupId(key);
7374
}
74-
try {
75-
operations.sendNotification(routing.getTarget(), builder.build());
76-
} catch (MessageDeliveryException e) {
77-
// message delivery may fail if groupId is set and topic is not a FIFO topic, or content based deduplication has not been set on topic attributes.
78-
if (e.getCause() instanceof InvalidParameterException) {
79-
logger.error("Failed to send notification to SNS topic {}:{}", routing.getTarget(), e.getCause().getMessage());
80-
}
81-
throw e;
82-
}
75+
76+
operations.sendNotification(routing.getTarget(), builder.build());
77+
78+
return CompletableFuture.completedFuture(null);
8379
});
8480
}
8581
}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* SNS event externalization support.
2+
* AWS SNS event externalization support.
33
*/
44
@org.springframework.lang.NonNullApi
55
package org.springframework.modulith.events.aws.sns;

spring-modulith-events/spring-modulith-events-aws-sns/src/test/java/org/springframework/modulith/events/aws/sns/SnsEventExternalizerConfigurationIntegrationTests.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,17 @@
1515
*/
1616
package org.springframework.modulith.events.aws.sns;
1717

18+
import static org.assertj.core.api.Assertions.*;
19+
import static org.mockito.Mockito.*;
20+
1821
import io.awspring.cloud.sns.core.SnsOperations;
19-
import org.junit.jupiter.api.Test;
2022

23+
import org.junit.jupiter.api.Test;
2124
import org.springframework.boot.autoconfigure.AutoConfigurations;
2225
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2326
import org.springframework.modulith.events.EventExternalizationConfiguration;
2427
import org.springframework.modulith.events.support.DelegatingEventExternalizer;
2528

26-
import static org.assertj.core.api.Assertions.assertThat;
27-
import static org.mockito.Mockito.mock;
28-
2929
/**
3030
* Integration tests for {@link SnsEventExternalizerConfiguration}.
3131
*
@@ -34,7 +34,7 @@
3434
*/
3535
class SnsEventExternalizerConfigurationIntegrationTests {
3636

37-
@Test // GH-342
37+
@Test // GH-344
3838
void registersExternalizerByDefault() {
3939

4040
basicSetup()
@@ -43,7 +43,7 @@ void registersExternalizerByDefault() {
4343
});
4444
}
4545

46-
@Test // GH-342
46+
@Test // GH-344
4747
void disablesExternalizationIfConfigured() {
4848

4949
basicSetup()

0 commit comments

Comments
 (0)