Skip to content

Instantly share code, notes, and snippets.

@alexaugustobr
Last active December 9, 2025 12:16
Show Gist options
  • Select an option

  • Save alexaugustobr/44804a3c64b84ed71220ce2a6ea048d9 to your computer and use it in GitHub Desktop.

Select an option

Save alexaugustobr/44804a3c64b84ed71220ce2a6ea048d9 to your computer and use it in GitHub Desktop.
AlgaDelivery
HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
*.db
out/
!**/src/main/**/out/
!**/src/test/**/out/
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
### VS Code ###
.vscode/
services:
kafka:
image: apache/kafka:4.1.1
ports:
- 9092:9092
environment:
KAFKA_NODE_ID: 0
KAFKA_PROCESS_ROLES: controller,broker
KAFKA_LISTENERS: PLAINTEXT://:9090,CONTROLLER://:9091,EXTERNAL://:9092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9090,EXTERNAL://localhost:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT
KAFKA_CONTROLLER_QUORUM_VOTERS: 0@kafka:9091
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
volumes:
- kafka-data:/apache/kafka
networks:
- local-network
kafka-ui:
image: provectuslabs/kafka-ui:v0.7.2
ports:
- 8084:8080
environment:
KAFKA_CLUSTERS_0_NAME: algadelivery-kafka-cluster
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9090
networks:
- local-network
volumes:
kafka-data:
services:
postgres:
image: postgres:17.5
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
volumes:
- postgres-data:/var/lib/postgresql/data
ports:
- 5432:5432
networks:
- local-network
pgadmin:
image: dpage/pgadmin4:9.5
depends_on:
- postgres
environment:
PGADMIN_DEFAULT_EMAIL: [email protected]
PGADMIN_DEFAULT_PASSWORD: algadelivery
ports:
- 8083:80
volumes:
- pgadmin-data:/var/lib/pgadmin
networks:
- local-network
volumes:
postgres-data:
pgadmin-data:
networks:
local-network:
driver: bridge
<project>
<properties>
<spring-cloud.version>2025.0.0</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-circuitbreaker-reactor-resilience4j</artifactId>
</dependency>
spring:
kafka:
consumer:
bootstrap-servers: localhost:9092
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.springframework.kafka.support.serializer.ErrorHandlingDeserializer
group-id: courier-management
properties:
spring.deserializer.value.delegate.class: org.springframework.kafka.support.serializer.JsonDeserializer
spring.json.trusted.packages: '*'
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka-test</artifactId>
<scope>test</scope>
</dependency>
spring:
kafka:
producer:
bootstrap-servers: localhost:9092
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
server.port: 8081
spring:
application:
name: courier-management
jpa:
hibernate:
ddl-auto: update
show-sql: false
datasource:
url: jdbc:postgresql://localhost:5432/courierdb
username: postgres
password: postgres
spring:
application:
name: delivery-tracking
jpa:
hibernate:
ddl-auto: update
show-sql: false
datasource:
url: jdbc:postgresql://localhost:5432/deliverydb
username: postgres
password: postgres
resilience4j:
circuitbreaker:
configs:
default:
slidingWindowType: TIME_BASED
slidingWindowSize: 5
minimumNumberOfCalls: 10
failureRateThreshold: 50
permittedNumberOfCallsInHalfOpenState: 3
waitDurationInOpenState: 10000
instances:
CB_CourierAPI_calculatePayout:
baseConfig: default
waitDurationInOpenState: 5000
<properties>
<resilience4j.version>2.3.0</resilience4j.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-spring-boot3</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-bom</artifactId>
<version>${resilience4j.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
resilience4j:
retry:
configs:
default:
maxAttempts: 2
waitDuration: 20ms
instances:
Retry_CourierAPI_calculatePayout:
baseConfig: default
maxAttempts: 3
retryExceptions:
- org.springframework.web.client.ResourceAccessException
ignoreExceptions:
- org.springframework.web.client.HttpServerErrorException
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>5.5.5</version>
<scope>test</scope>
</dependency>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment