Skip to content

Commit

Permalink
Merge pull request #303 from hardikSinghBehl/codebase/spring-cloud-sn…
Browse files Browse the repository at this point in the history
…s-sqs-pubsub

codebase/spring-cloud-sns-sqs-pubsub
  • Loading branch information
Maiklins committed May 4, 2024
2 parents d5aa933 + 06e40eb commit 71e243e
Show file tree
Hide file tree
Showing 46 changed files with 2,841 additions and 0 deletions.
4 changes: 4 additions & 0 deletions aws/spring-cloud-sns-sqs-pubsub/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
target
.project
.settings
.DS_Store
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.5/apache-maven-3.9.5-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar
18 changes: 18 additions & 0 deletions aws/spring-cloud-sns-sqs-pubsub/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
## Publisher-Subscriber Pattern using AWS SNS and SQS in Spring Boot

Codebase demonstrating the implementation of publisher-subscriber pattern using AWS SNS and SQS in Spring Boot. [Spring Cloud AWS](https://spring.io/projects/spring-cloud-aws) is used to interact with AWS services in context.

[LocalStack](https://github.com/localstack/localstack) has been used to containerize the multi-module Maven project for local development. The below commands can be used to start the applications:

```bash
./mvnw clean package spring-boot:build-image
```
```bash
sudo docker-compose up -d
```

## Blog posts

Blog posts about this topic:

* [Publisher-Subscriber Pattern using AWS SNS and SQS in Spring Boot](https://reflectoring.io/publisher-subscriber-pattern-using-aws-sns-and-sqs-in-spring-boot)
52 changes: 52 additions & 0 deletions aws/spring-cloud-sns-sqs-pubsub/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
version: '3.7'

services:
localstack:
container_name: localstack
image: localstack/localstack:3.3
ports:
- 4566:4566
environment:
- SERVICES=sns,sqs
volumes:
- ./localstack/init-sns-topic.sh:/etc/localstack/init/ready.d/init-sns-topic.sh
- ./localstack/init-sqs-queue.sh:/etc/localstack/init/ready.d/init-sqs-queue.sh
- ./localstack/subscribe-sqs-to-sns.sh:/etc/localstack/init/ready.d/subscribe-sqs-to-sns.sh
networks:
- reflectoring

user-management-service:
container_name: user-management-service
image: aws-pubsub-user-management-service
ports:
- 8080:8080
depends_on:
- localstack
environment:
spring.cloud.aws.sns.endpoint: 'http://localstack:4566'
spring.cloud.aws.credentials.access-key: test
spring.cloud.aws.credentials.secret-key: test
spring.cloud.aws.sns.region: 'us-east-1'
io.reflectoring.aws.sns.topic-arn: 'arn:aws:sns:us-east-1:000000000000:user-account-created'
networks:
- reflectoring

notification-dispatcher-service:
container_name: notification-dispatcher-service
image: aws-pubsub-notification-dispatcher-service
ports:
- 9090:8080
depends_on:
- localstack
- user-management-service
environment:
spring.cloud.aws.sqs.endpoint: 'http://localstack:4566'
spring.cloud.aws.credentials.access-key: test
spring.cloud.aws.credentials.secret-key: test
spring.cloud.aws.sqs.region: 'us-east-1'
io.reflectoring.aws.sqs.queue-url: 'http://sqs.us-east-1.localhost.localstack.cloud:4566/000000000000/dispatch-email-notification'
networks:
- reflectoring

networks:
reflectoring:
33 changes: 33 additions & 0 deletions aws/spring-cloud-sns-sqs-pubsub/integration-test/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/

### VS Code ###
.vscode/
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.5/apache-maven-3.9.5-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar

0 comments on commit 71e243e

Please sign in to comment.