├── microservice-spring-demo
├── postgres
│ ├── Dockerfile
│ ├── docker-compose.yaml
│ └── init-user-db.sh
├── prometheus
│ ├── Dockerfile
│ └── prometheus.yml
├── load.sh
├── .mvn
│ └── wrapper
│ │ ├── maven-wrapper.jar
│ │ └── maven-wrapper.properties
├── microservice-spring-shipping
│ ├── src
│ │ ├── main
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── ewolff
│ │ │ │ │ └── microservice
│ │ │ │ │ └── shipping
│ │ │ │ │ ├── ShipmentService.java
│ │ │ │ │ ├── ShipmentRepository.java
│ │ │ │ │ ├── web
│ │ │ │ │ ├── PollController.java
│ │ │ │ │ └── ShippingController.java
│ │ │ │ │ ├── ShippingApp.java
│ │ │ │ │ ├── Address.java
│ │ │ │ │ ├── ShipmentServiceImpl.java
│ │ │ │ │ ├── Item.java
│ │ │ │ │ ├── poller
│ │ │ │ │ ├── OrderFeed.java
│ │ │ │ │ ├── OrderFeedEntry.java
│ │ │ │ │ └── ShippingPoller.java
│ │ │ │ │ ├── ShipmentLine.java
│ │ │ │ │ ├── Customer.java
│ │ │ │ │ └── Shipment.java
│ │ │ └── resources
│ │ │ │ ├── application.yml
│ │ │ │ ├── templates
│ │ │ │ ├── success.html
│ │ │ │ ├── layout.html
│ │ │ │ ├── shipmentlist.html
│ │ │ │ └── shipment.html
│ │ │ │ └── application.properties
│ │ └── test
│ │ │ ├── resources
│ │ │ ├── application-test.properties
│ │ │ └── logback-spring.xml
│ │ │ └── java
│ │ │ └── com
│ │ │ └── ewolff
│ │ │ └── microservice
│ │ │ └── shipping
│ │ │ ├── ShippingTestApp.java
│ │ │ ├── ShippingWebIntegrationTest.java
│ │ │ ├── ShippingServiceTest.java
│ │ │ └── PollingTest.java
│ ├── Dockerfile
│ └── pom.xml
├── microservice-spring-invoicing
│ ├── src
│ │ ├── main
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ │ └── ewolff
│ │ │ │ │ └── microservice
│ │ │ │ │ └── invoicing
│ │ │ │ │ ├── InvoiceService.java
│ │ │ │ │ ├── InvoiceRepository.java
│ │ │ │ │ ├── web
│ │ │ │ │ ├── PollController.java
│ │ │ │ │ └── InvoiceController.java
│ │ │ │ │ ├── InvoiceApp.java
│ │ │ │ │ ├── Address.java
│ │ │ │ │ ├── InvoiceServiceImpl.java
│ │ │ │ │ ├── poller
│ │ │ │ │ ├── OrderFeed.java
│ │ │ │ │ ├── OrderFeedEntry.java
│ │ │ │ │ └── InvoicePoller.java
│ │ │ │ │ ├── InvoiceLine.java
│ │ │ │ │ ├── Item.java
│ │ │ │ │ ├── Customer.java
│ │ │ │ │ └── Invoice.java
│ │ │ └── resources
│ │ │ │ ├── application.yml
│ │ │ │ ├── templates
│ │ │ │ ├── success.html
│ │ │ │ ├── layout.html
│ │ │ │ ├── invoicelist.html
│ │ │ │ └── invoice.html
│ │ │ │ └── application.properties
│ │ └── test
│ │ │ ├── resources
│ │ │ ├── application-test.properties
│ │ │ └── logback-spring.xml
│ │ │ └── java
│ │ │ └── com
│ │ │ └── ewolff
│ │ │ └── microservice
│ │ │ └── invoicing
│ │ │ ├── InvoiceTestApp.java
│ │ │ ├── InvoiceWebIntegrationTest.java
│ │ │ ├── InvoicingServiceTest.java
│ │ │ └── PollingTest.java
│ ├── Dockerfile
│ └── pom.xml
├── microservice-spring-order
│ ├── Dockerfile
│ ├── src
│ │ ├── test
│ │ │ ├── resources
│ │ │ │ ├── application-test.properties
│ │ │ │ ├── logback-spring.xml
│ │ │ │ ├── access-filter.json
│ │ │ │ └── pacts
│ │ │ │ │ ├── Invoice-OrderProvider.json
│ │ │ │ │ ├── Shipping-OrderProvider.json
│ │ │ │ │ └── #Shipping-OrderProvider.json#
│ │ │ └── java
│ │ │ │ └── com
│ │ │ │ └── ewolff
│ │ │ │ └── microservice
│ │ │ │ └── order
│ │ │ │ ├── OrderTestApp.java
│ │ │ │ ├── ItemTestDataGeneratorTest.java
│ │ │ │ ├── logic
│ │ │ │ ├── OrderServiceTest.java
│ │ │ │ └── OrderWebIntegrationTest.java
│ │ │ │ ├── CustomerTestDataGeneratorTest.java
│ │ │ │ ├── PactTest.java
│ │ │ │ ├── OrderTestDataGenerator.java
│ │ │ │ └── FeedClientTest.java
│ │ └── main
│ │ │ ├── resources
│ │ │ ├── templates
│ │ │ │ ├── success.html
│ │ │ │ ├── layout.html
│ │ │ │ ├── orderlist.html
│ │ │ │ ├── order.html
│ │ │ │ ├── order-full.html
│ │ │ │ └── orderForm.html
│ │ │ └── application.properties
│ │ │ └── java
│ │ │ └── com
│ │ │ └── ewolff
│ │ │ └── microservice
│ │ │ └── order
│ │ │ ├── logic
│ │ │ ├── OrderRepository.java
│ │ │ ├── OrderService.java
│ │ │ ├── OrderLine.java
│ │ │ ├── Address.java
│ │ │ ├── OrderRestController.java
│ │ │ ├── OrderController.java
│ │ │ └── Order.java
│ │ │ ├── customer
│ │ │ ├── CustomerRepository.java
│ │ │ ├── CustomerFormatter.java
│ │ │ ├── CustomerTestDataGenerator.java
│ │ │ └── Customer.java
│ │ │ ├── item
│ │ │ ├── ItemRepository.java
│ │ │ ├── ItemFormatter.java
│ │ │ ├── ItemTestDataGenerator.java
│ │ │ └── Item.java
│ │ │ ├── OrderApp.java
│ │ │ ├── RandomlyFailingFilter.java
│ │ │ ├── OrderFeed.java
│ │ │ └── OrderFeedEntry.java
│ └── pom.xml
├── docker-build.sh
├── docker-push.sh
├── service-proxy.sh
├── index.html
├── infrastructure.yaml
├── docker-compose.yaml
├── fail.yaml
├── pom.xml
├── microservices.yaml
├── mvnw.cmd
└── mvnw
├── .gitignore
├── .github
└── workflows
│ └── build-images.yml
└── README.md
/microservice-spring-demo/postgres/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM docker.io/postgres:14.17
2 | COPY init-user-db.sh /docker-entrypoint-initdb.d/init-user-db.sh
3 |
--------------------------------------------------------------------------------
/microservice-spring-demo/prometheus/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM docker.io/prom/prometheus:v2.47.2
2 | ADD prometheus.yml /etc/prometheus/
3 | EXPOSE 9090
4 |
--------------------------------------------------------------------------------
/microservice-spring-demo/load.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | for i in `seq 1 1000`;
3 | do
4 | curl -s -o /dev/null -I -w "%{http_code}" $1
5 | echo
6 | done
7 |
--------------------------------------------------------------------------------
/microservice-spring-demo/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ewolff/microservice-spring/HEAD/microservice-spring-demo/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/microservice-spring-demo/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip
--------------------------------------------------------------------------------
/microservice-spring-demo/microservice-spring-shipping/src/main/java/com/ewolff/microservice/shipping/ShipmentService.java:
--------------------------------------------------------------------------------
1 | package com.ewolff.microservice.shipping;
2 |
3 | public interface ShipmentService {
4 |
5 | void ship(Shipment shipment);
6 |
7 | }
--------------------------------------------------------------------------------
/microservice-spring-demo/microservice-spring-invoicing/src/main/java/com/ewolff/microservice/invoicing/InvoiceService.java:
--------------------------------------------------------------------------------
1 | package com.ewolff.microservice.invoicing;
2 |
3 | public interface InvoiceService {
4 |
5 | void generateInvoice(Invoice invoice);
6 |
7 | }
--------------------------------------------------------------------------------
/microservice-spring-demo/microservice-spring-order/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM docker.io/eclipse-temurin:24-jre-alpine
2 | COPY target/microservice-spring-order-0.0.1-SNAPSHOT.jar .
3 | CMD java -Xmx300m -Xms300m -XX:TieredStopAtLevel=1 -noverify -jar microservice-spring-order-0.0.1-SNAPSHOT.jar
4 | EXPOSE 8081
5 |
--------------------------------------------------------------------------------
/microservice-spring-demo/microservice-spring-shipping/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM docker.io/eclipse-temurin:24-jre-alpine
2 | COPY target/microservice-spring-shipping-0.0.1-SNAPSHOT.jar .
3 | CMD java -Xmx300m -Xms300m -XX:TieredStopAtLevel=1 -noverify -jar microservice-spring-shipping-0.0.1-SNAPSHOT.jar
4 | EXPOSE 8083
5 |
--------------------------------------------------------------------------------
/microservice-spring-demo/microservice-spring-invoicing/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM docker.io/eclipse-temurin:24-jre-alpine
2 | COPY target/microservice-spring-invoicing-0.0.1-SNAPSHOT.jar .
3 | CMD java -Xmx300m -Xms300m -XX:TieredStopAtLevel=1 -noverify -jar microservice-spring-invoicing-0.0.1-SNAPSHOT.jar
4 | EXPOSE 8082
5 |
--------------------------------------------------------------------------------
/microservice-spring-demo/docker-build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | docker build --tag=microservice-spring-postgres:1 postgres
3 | docker build --tag=microservice-spring-shipping:1 microservice-spring-shipping
4 | docker build --tag=microservice-spring-invoicing:1 microservice-spring-invoicing
5 | docker build --tag=microservice-spring-order:1 microservice-spring-order
6 |
--------------------------------------------------------------------------------
/microservice-spring-demo/microservice-spring-order/src/test/resources/application-test.properties:
--------------------------------------------------------------------------------
1 | spring.thymeleaf.cache=false
2 | spring.datasource.url=jdbc:hsqldb:mem:mymemdb
3 | spring.datasource.username=dbuser
4 | spring.datasource.password=dbpass
5 | spring.datasource.driver-class-name=org.hsqldb.jdbc.JDBCDriver
6 | baseUrl=http://localhost:8081/order/
--------------------------------------------------------------------------------
/microservice-spring-demo/microservice-spring-invoicing/src/test/resources/application-test.properties:
--------------------------------------------------------------------------------
1 | order.url=http://localhost:8081/feed
2 | spring.thymeleaf.cache=false
3 | poller.actived=false
4 | spring.datasource.url=jdbc:hsqldb:mem:mymemdb
5 | spring.datasource.username=dbuser
6 | spring.datasource.password=dbpass
7 | spring.datasource.driver-class-name=org.hsqldb.jdbc.JDBCDriver
--------------------------------------------------------------------------------
/microservice-spring-demo/microservice-spring-shipping/src/test/resources/application-test.properties:
--------------------------------------------------------------------------------
1 | order.url=http://localhost:8081/feed
2 | spring.thymeleaf.cache=false
3 | poller.actived=false
4 | spring.datasource.url=jdbc:hsqldb:mem:mymemdb
5 | spring.datasource.username=dbuser
6 | spring.datasource.password=dbpass
7 | spring.datasource.driver-class-name=org.hsqldb.jdbc.JDBCDriver
--------------------------------------------------------------------------------
/microservice-spring-demo/postgres/docker-compose.yaml:
--------------------------------------------------------------------------------
1 | version: '3.4'
2 |
3 | services:
4 | db:
5 | image: spring-microservices/postgres
6 | container_name: postgres
7 | ports:
8 | - "5432:5432"
9 | build:
10 | context: .
11 | dockerfile: Dockerfile
12 | environment:
13 | POSTGRES_USER: dbuser
14 | POSTGRES_PASSWORD: dbpass
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .vagrant
3 | .dapr
4 | .springBeans
5 | .classpath
6 | .project
7 | .settings
8 | .idea
9 | .metadata
10 | *.iml
11 | target/
12 | istio-*/
13 | pom.xml.tag
14 | pom.xml.releaseBackup
15 | pom.xml.versionsBackup
16 | pom.xml.next
17 | release.properties
18 | dependency-reduced-pom.xml
19 | buildNumber.properties
20 | .mvn/timing.properties
21 | .code
22 | .vscode
23 | *~
24 |
--------------------------------------------------------------------------------
/microservice-spring-demo/microservice-spring-order/src/test/resources/logback-spring.xml:
--------------------------------------------------------------------------------
1 |
2 |
| ID | 15 |Customer | 16 |||
| No shipments | 21 ||||
| 1 | 24 |Firstname 25 | Name | 26 |||
| ID | 15 |Customer | 16 |Total Amount | 17 ||
| No invoices | 22 ||||
| 1 | 25 |Firstname 26 | Name | 27 |42.0 | 28 ||
| ID | 15 |Customer | 16 |Total Price | 17 |18 | |
| No orders | 23 ||||
| 1 | 26 |Firstname 27 | Name | 28 |42.0 | 29 |30 | 33 | | 34 |