The following App was developed as a part of the development cycle of Observable Streams functionalities collections, and it is intended as a learning tool and reference guide.
graph TB
s1[approved-statement-lines] --> s2[statement-lines-classifier]
s2 --> s3[receipt-apportionment]
s2 --> s4[accouting-summarization]
s3 --> s5[revenue-summarization]
s4 --> s6[bank-statements]
s5 --> s7[revenue]
s8[order-apportionment] --> s5
Summarizes all Apportionment Lines weekly, storing it in a circular queue per Account ID holding data up to six months old.
Statement Lines uniqueness is guaranteed using a Bloom Filter — responsible for carrying statistic data from the last two months.
Performs a distribution of all Statement Lines per Order-Account, in a ten-minute time window. Forwards all Statement Lines outside the ten-minute window to the Accounting Apportionment.
From:
Statement Line | Account | Baggage | Amount | Date |
---|---|---|---|---|
12 | 2 | 89, 115, 701 | $ 15.0000 | 2022-11-25 |
13 | 2 | 65, 15 | $ 09.3500 | 2022-11-26 |
19 | 2 | 65 | $ 01.8900 | 2022-11-26 |
25 | 2 | 18 | $ 19.3500 | 2022-11-27 |
102 | 7 | 18 | $ 39.3500 | 2022-11-27 |
To:
Order | Account | Amount | Statement Lines | Date |
---|---|---|---|---|
89 | 2 | $ 05.0000 | 12 | 2022-11-25 |
115 | 2 | $ 05.0000 | 12 | 2022-11-26 |
701 | 2 | $ 05.0000 | 12 | 2022-11-26 |
65 | 2 | $ 06.5650 | 13, 19 | 2022-11-27 |
15 | 2 | $ 04.6750 | 13 | 2022-11-27 |
18 | 2 | $ 19.3500 | 25 | 2022-11-27 |
18 | 7 | $ 39.3500 | 102 | 2022-11-27 |
It Summarizes all costs related to an Order in the ten-minute window, by grouping together the receipt cost with all previous order-related costs.
Holds reference for all Statement Lines for the current week, along with the resulting balance.
There's a docker-compose file containing all needed dependencies.
For further reference, please consider the following sections:
- Official Gradle documentation
- Spring Boot Gradle Plugin Reference Guide
- Create an OCI image
- Distributed Tracing Reference Guide
- Getting Started with Distributed Tracing
- Spring Configuration Processor
- Spring Boot Actuator
- Spring for Apache Kafka
- Apache Kafka Streams Support
- Apache Kafka Streams Binding Capabilities of Spring Cloud Stream
- Prometheus
The following guides illustrate how to use some features concretely:
- Building a RESTful Web Service with Spring Boot Actuator
- Samples for using Apache Kafka Streams with Spring Cloud stream
These additional references should also help you: