-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
polish documentation #1602
polish documentation #1602
Conversation
Warning Rate limit exceeded@rajadilipkolli has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 14 minutes and 22 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (1)
WalkthroughThis pull request focuses on comprehensive documentation updates for a Spring Boot experiments repository. The primary changes involve enhancing the main Changes
Possibly related PRs
Poem
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (7)
boot-chaos-monkey/README.md (4)
6-6
: Add alt text to the image for accessibility.The chaos monkey image should include alternative text for better accessibility.
-![](../images/chaos-monkey.png) +![Chaos Monkey Logo](../images/chaos-monkey.png)🧰 Tools
🪛 Markdownlint (0.37.0)
6-6: null
Images should have alternate text (alt text)(MD045, no-alt-text)
8-8
: Improve readability with proper punctuation.The description paragraph needs better punctuation for improved readability.
-The idea behind this API is to show some of all possibles ways that you can introduce Chaos Engineering principles in a project. Adds Gatling performance tests to demonstrate how adding assaults will cause delay in response and chaos monkey is working as expected . +The idea behind this API is to show some of the possible ways to introduce Chaos Engineering principles in a project. It adds Gatling performance tests to demonstrate how adding assaults will cause delays in response time and verify that chaos monkey is working as expected.🧰 Tools
🪛 LanguageTool
[uncategorized] ~8-~8: You might be missing the article “the” here.
Context: ... behind this API is to show some of all possibles ways that you can introduce Chaos Engin...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~8-~8: Possible missing comma found.
Context: ...how adding assaults will cause delay in response and chaos monkey is working as expected...(AI_HYDRA_LEO_MISSING_COMMA)
34-34
: Fix grammar in the instruction text.The instruction text contains a grammatical error.
-By Default, chaos Monkey is enabled, lets disabled and run the tests again. It should improve the response times +By default, Chaos Monkey is enabled. Let's disable it and run the tests again. It should improve the response times.
58-66
: Use proper heading structure for test results.The test results section uses emphasis (
**
) for headings. Use proper markdown heading syntax instead.-we can observe that mean requests/sec is more when chaos monkey is enabled - -**With Chaos Monkey enabled** +We can observe that mean requests/sec is more when Chaos Monkey is enabled. + +### With Chaos Monkey Enabled🧰 Tools
🪛 Markdownlint (0.37.0)
60-60: null
Emphasis used instead of a heading(MD036, no-emphasis-as-heading)
66-66: null
Emphasis used instead of a heading(MD036, no-emphasis-as-heading)
README.md (3)
8-10
: Fix TOC indentation for consistency.The table of contents uses 4-space indentation instead of the standard 2-space indentation.
- * [Tech Stack](#tech-stack) - * [Useful Docker Commands](#useful-docker-commands) - * [Useful git Commands](#useful-git-commands) + * [Tech Stack](#tech-stack) + * [Useful Docker Commands](#useful-docker-commands) + * [Useful git Commands](#useful-git-commands)🧰 Tools
🪛 Markdownlint (0.37.0)
8-8: Expected: 2; Actual: 4
Unordered list indentation(MD007, ul-indent)
9-9: Expected: 2; Actual: 4
Unordered list indentation(MD007, ul-indent)
10-10: Expected: 2; Actual: 4
Unordered list indentation(MD007, ul-indent)
42-43
: Fix abbreviation formatting.The abbreviation "i.e." should include periods for proper formatting.
-| [MultiTenancy Partition Based](./jpa/multitenancy/partition) | This application, demonstrates running multi tenancy in JPA using partition based i.e Shared Database with Shared table | Completed | -| [MultiTenancy Schema Based](./jpa/multitenancy/schema) | This application, demonstrates running multi tenancy in JPA using schema based i.e Shared Database with Separate Schema | Completed | +| [MultiTenancy Partition Based](./jpa/multitenancy/partition) | This application, demonstrates running multi tenancy in JPA using partition based (i.e., Shared Database with Shared table) | Completed | +| [MultiTenancy Schema Based](./jpa/multitenancy/schema) | This application, demonstrates running multi tenancy in JPA using schema based (i.e., Shared Database with Separate Schema) | Completed |🧰 Tools
🪛 LanguageTool
[uncategorized] ~42-~42: The abbreviation “i.e.” (= that is) requires two periods.
Context: ...ti tenancy in JPA using partition based i.e Shared Database with Shared table ...(I_E)
[uncategorized] ~43-~43: The abbreviation “i.e.” (= that is) requires two periods.
Context: ...multi tenancy in JPA using schema based i.e Shared Database with Separate Schema ...(I_E)
17-17
: Remove hard tabs from the table header.The table header contains hard tabs which should be replaced with spaces for consistency.
Replace hard tabs with spaces in the table header row.
🧰 Tools
🪛 Markdownlint (0.37.0)
17-17: Column: 137
Hard tabs(MD010, no-hard-tabs)
17-17: Column: 498
Hard tabs(MD010, no-hard-tabs)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
images/chaos-monkey.png
is excluded by!**/*.png
📒 Files selected for processing (2)
README.md
(1 hunks)boot-chaos-monkey/README.md
(3 hunks)
🧰 Additional context used
🪛 LanguageTool
boot-chaos-monkey/README.md
[uncategorized] ~8-~8: You might be missing the article “the” here.
Context: ... behind this API is to show some of all possibles ways that you can introduce Chaos Engin...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~8-~8: Possible missing comma found.
Context: ...how adding assaults will cause delay in response and chaos monkey is working as expected...
(AI_HYDRA_LEO_MISSING_COMMA)
README.md
[uncategorized] ~42-~42: The abbreviation “i.e.” (= that is) requires two periods.
Context: ...ti tenancy in JPA using partition based i.e Shared Database with Shared table ...
(I_E)
[uncategorized] ~43-~43: The abbreviation “i.e.” (= that is) requires two periods.
Context: ...multi tenancy in JPA using schema based i.e Shared Database with Separate Schema ...
(I_E)
🪛 Markdownlint (0.37.0)
boot-chaos-monkey/README.md
6-6: null
Images should have alternate text (alt text)
(MD045, no-alt-text)
60-60: null
Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
66-66: null
Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
README.md
8-8: Expected: 2; Actual: 4
Unordered list indentation
(MD007, ul-indent)
9-9: Expected: 2; Actual: 4
Unordered list indentation
(MD007, ul-indent)
10-10: Expected: 2; Actual: 4
Unordered list indentation
(MD007, ul-indent)
17-17: Column: 137
Hard tabs
(MD010, no-hard-tabs)
17-17: Column: 498
Hard tabs
(MD010, no-hard-tabs)
Qodana Community for JVM97 new problems were found
☁️ View the detailed Qodana report Contact Qodana teamContact us at [email protected]
|
README.md
Outdated
| [spring-boot-graphql-webmvc](./graphql/boot-graphql-webmvc) | The application, demonstrates how to apply graphql concepts to the spring boot project | WIP | | ||
| [Custom SequenceNumber and LazyConnectionDataSourceProxy for db connection improvement](./jpa/boot-data-customsequence) | This application demonstrates: Custom sequence generation, Database connection optimization using datasource-proxy and LazyConnectionDataSourceProxy with MariaDB, SQL query validation using SQLStatementCountValidator, Dynamic validation using ValidationGroups | Completed | | ||
| [KeySet pagination and dynamic search](./jpa/keyset-pagination/blaze-persistence) | Implements KeySet Pagination using Blaze Persistence and enable dynamic search using specifications | Completed | | ||
| Name | Description | Status | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@coderabbitai, please review the Description of all rows in this table and suggest improvements to make is more clear
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@rajadilipkolli, here’s a clearer, more concise set of descriptions for each entry in the table, following a consistent style:
-
Spring Batch Implementation
Demonstrates how to use Spring Batch 5 with a straightforward configuration, generate batch tables via Liquibase, and produce an SBOM (Software Bill of Materials). -
Archunit Implementation
Shows how to enforce architectural constraints in a Spring Boot project using ArchUnit rules. -
Chaos Engineering Principles
Covers applying Chaos Engineering with Spring Boot, along with performance testing via Gatling to highlight the impact of chaos experiments. -
Grafana LGTM
Demonstrates an observability stack with Loki, Grafana, Tempo, and Mimir to handle metrics, traces, and logs in a Spring Boot context. -
Mongodb and Elasticsearch Reactive Integration
Illustrates storing data in MongoDB, then retrieving it using reactive ElasticSearch for quick, geospatial, and reactive-based searches. -
Opensearch Integration
Showcases saving data and performing swift geospatial searches in OpenSearch as an ElasticSearch alternative. -
Rabbit Mq Implementation
Demonstrates RabbitMQ producer acknowledgments, a Dead Letter Queue setup, and a Thymeleaf-powered UI. -
Rest API Documentation with Examples
Highlights generating PDF documentation of RESTful APIs using Spring REST Docs. -
Implementation of Strategy Design Pattern
Uses the Strategy Pattern within a Spring application, builds a native image with GraalVM, and provides a main class to launch the application natively. -
Feature Toggles
Demonstrates toggling specific features on or off at runtime in a Spring Boot project. -
Ultimate Redis Implementation
Explores multiple Redis usage patterns with varying time-to-live (TTL) settings, including querying data via Spring Data Redis. -
Graph QL Implementation using QueryDSL
Illustrates integrating GraphQL with QueryDSL to interact with a database in a Spring application. -
Graph QL Implementation using Webflux
Showcases using GraphQL alongside the reactive WebFlux stack for asynchronous data retrieval. -
Graph QL Implementation using WebMVC
Demonstrates applying GraphQL concepts with the traditional Spring MVC for synchronous data handling. -
Custom SequenceNumber and LazyConnectionDataSourceProxy for DB Connection Improvement
Highlights creating custom sequence generators, optimizing database connections with LazyConnectionDataSourceProxy, observing SQL statements via datasource-proxy, and validating queries in integration tests. -
Hibernate Envers Implementation using Spring Data JPA
Shows how to track entity revisions with Hibernate Envers and monitor system health, triggering alerts on high CPU usage or downtime. -
Connecting to Multiple Data Sources
Demonstrates configuring multiple SQL databases in a single Spring Boot application, handling connection pools, and running both Liquibase and Flyway migrations. -
Hibernate 2nd Level Cache Using Redis
Explains configuring Hibernate’s second-level caching via Redis and testing using query counting, with a custom repository approach. -
Read Replica Postgres with Connection Optimization
Illustrates writing data to a primary Postgres database, then reading from a replica using LazyConnectionDataSourceProxy for improved performance. -
KeySet Pagination and Dynamic Search with Blaze
Implements keyset pagination using Blaze Persistence, adding dynamic query filters with specifications. -
KeySet Pagination and Dynamic Search with Spring Data JPA
Implements keyset pagination using Spring Data JPA, enabling dynamic queries through JPA specifications. -
MultiTenancy with Multiple Data Sources
Provides examples of running multi-tenant applications under different strategies, each with its own data source. -
MultiTenancy DB Based
Demonstrates having each tenant use a separate database (while sharing the same schema design). -
MultiTenancy Partition Based
Shows how to share a single database and table across tenants using a partition-based approach. -
MultiTenancy Schema Based
Demonstrates isolating tenants by allocating a separate schema for each tenant within the same database. -
Reactive SQL with JOOQ
Explains performing reactive CRUD operations in Spring Boot using jOOQ. -
Reactive Cache with Redis
Demonstrates caching reactive database operations in Redis to boost performance. -
Reactive Application
Illustrates an end-to-end reactive CRUD workflow in Spring Boot using R2DBC. -
Background Jobs and Scheduling Using JobRunr
Sets up background job scheduling with JobRunr for asynchronous task execution. -
Scheduling Using Quartz
Showcases the Quartz scheduler, providing a Thymeleaf UI to pause, resume, create, and delete scheduled tasks. -
Scheduling Using Database Distributed Locks with ShedLock
Demonstrates scheduling while ensuring only one active instance at a time via ShedLock.
Above is a proposed style to keep each description concise and consistent. Feel free to further tailor any wording based on specific technical depth or intended audience.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@coderabbiai, can you please help me to update all ReadMe files in the submodule so anyone can understand what that project is doing and provides as much details as possible.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems like the humans are having a chat. I'll hop back into my burrow for now. If you need me again, just tag @coderabbitai in a new comment, and I'll come hopping out!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (5)
boot-strategy-plugin/ReadMe.md (1)
13-14
: Update build badge to reflect Maven usage.The test command has been updated from Gradle to Maven, but the build badge at the top of the README still shows Gradle status.
boot-chaos-monkey/README.md (2)
6-6
: Add alt text to the image for accessibility.The chaos monkey image should include alt text for better accessibility.
-![](../images/chaos-monkey.png) +![Chaos Monkey Architecture Diagram](../images/chaos-monkey.png)🧰 Tools
🪛 Markdownlint (0.37.0)
6-6: null
Images should have alternate text (alt text)(MD045, no-alt-text)
66-66
: Use proper heading formatting for test results section.Replace emphasis with proper heading markdown syntax.
-**With Chaos Monkey disabled** +### With Chaos Monkey disabled🧰 Tools
🪛 Markdownlint (0.37.0)
66-66: null
Emphasis used instead of a heading(MD036, no-emphasis-as-heading)
README.md (2)
8-10
: Fix TOC indentation for consistency.The TOC items should have consistent indentation of 2 spaces.
- * [Tech Stack](#tech-stack) - * [Useful Docker Commands](#useful-docker-commands) - * [Useful git Commands](#useful-git-commands) + * [Tech Stack](#tech-stack) + * [Useful Docker Commands](#useful-docker-commands) + * [Useful git Commands](#useful-git-commands)🧰 Tools
🪛 Markdownlint (0.37.0)
8-8: Expected: 2; Actual: 4
Unordered list indentation(MD007, ul-indent)
9-9: Expected: 2; Actual: 4
Unordered list indentation(MD007, ul-indent)
10-10: Expected: 2; Actual: 4
Unordered list indentation(MD007, ul-indent)
17-17
: Fix hard tabs in table formatting.Replace hard tabs with spaces in the table header for consistent rendering across platforms.
-| Name | Description | Status | +| Name | Description | Status |🧰 Tools
🪛 Markdownlint (0.37.0)
17-17: Column: 137
Hard tabs(MD010, no-hard-tabs)
17-17: Column: 498
Hard tabs(MD010, no-hard-tabs)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
README.md
(1 hunks)boot-chaos-monkey/README.md
(3 hunks)boot-strategy-plugin/ReadMe.md
(1 hunks)
🧰 Additional context used
🪛 Markdownlint (0.37.0)
boot-strategy-plugin/ReadMe.md
5-5: Expected: h2; Actual: h3
Heading levels should only increment by one level at a time
(MD001, heading-increment)
README.md
8-8: Expected: 2; Actual: 4
Unordered list indentation
(MD007, ul-indent)
9-9: Expected: 2; Actual: 4
Unordered list indentation
(MD007, ul-indent)
10-10: Expected: 2; Actual: 4
Unordered list indentation
(MD007, ul-indent)
17-17: Column: 137
Hard tabs
(MD010, no-hard-tabs)
17-17: Column: 498
Hard tabs
(MD010, no-hard-tabs)
boot-chaos-monkey/README.md
6-6: null
Images should have alternate text (alt text)
(MD045, no-alt-text)
66-66: null
Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
🔇 Additional comments (4)
boot-strategy-plugin/ReadMe.md (2)
5-9
: LGTM: Clear formatting instructions added.
The new "Format code" section with the spotless command provides clear instructions for code formatting.
🧰 Tools
🪛 Markdownlint (0.37.0)
5-5: Expected: h2; Actual: h3
Heading levels should only increment by one level at a time
(MD001, heading-increment)
19-21
: LGTM: Clear local development setup instructions.
The local run section now properly sequences the steps:
- Start dependencies with Docker Compose
- Run the application with Maven and local profile
boot-chaos-monkey/README.md (1)
8-8
: LGTM: Clear project description.
The enhanced description clearly explains the purpose and implementation details of the Chaos Engineering principles.
README.md (1)
17-50
: LGTM: Comprehensive project descriptions.
The project descriptions have been significantly enhanced with:
- Structured lists using
<ol>
tags - Clear categorization of features
- Consistent status indicators
🧰 Tools
🪛 Markdownlint (0.37.0)
17-17: Column: 137
Hard tabs
(MD010, no-hard-tabs)
17-17: Column: 498
Hard tabs
(MD010, no-hard-tabs)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (3)
README.md (3)
8-10
: Fix list indentation in TOC.The unordered list items in the Table of Contents should have consistent indentation of 2 spaces instead of 4.
* [spring boot integration experiments](#spring-boot-integration-experiments) - * [Tech Stack](#tech-stack) - * [Useful Docker Commands](#useful-docker-commands) - * [Useful git Commands](#useful-git-commands) + * [Tech Stack](#tech-stack) + * [Useful Docker Commands](#useful-docker-commands) + * [Useful git Commands](#useful-git-commands)🧰 Tools
🪛 Markdownlint (0.37.0)
8-8: Expected: 2; Actual: 4
Unordered list indentation(MD007, ul-indent)
9-9: Expected: 2; Actual: 4
Unordered list indentation(MD007, ul-indent)
10-10: Expected: 2; Actual: 4
Unordered list indentation(MD007, ul-indent)
17-17
: Replace hard tabs with spaces in the table header.The table header contains hard tabs that should be replaced with spaces for consistent formatting.
-| Name | Description | Status | +| Name | Description | Status |🧰 Tools
🪛 Markdownlint (0.37.0)
17-17: Column: 137
Hard tabs(MD010, no-hard-tabs)
17-17: Column: 466
Hard tabs(MD010, no-hard-tabs)
33-33
: Use standard Markdown list format instead of HTML tags.Replace HTML
<ol>
tags with standard Markdown numbered list format for better compatibility across different Markdown viewers.-| [Custom SequenceNumber and LazyConnectionDataSourceProxy for db connection improvement](./jpa/boot-data-customsequence) | <ol>Highlights creating custom sequence generators</ol> <ol> Optimizing database connections with `LazyConnectionDataSourceProxy`</ol> <ol> Observing SQL statements via `datasource-proxy`, and validating queries in integration tests using `SQLStatementCountValidator`</ol> <ol> Dynamic input validation using ValidationGroups </ol> | Completed | +| [Custom SequenceNumber and LazyConnectionDataSourceProxy for db connection improvement](./jpa/boot-data-customsequence) | 1. Highlights creating custom sequence generators\n2. Optimizing database connections with `LazyConnectionDataSourceProxy`\n3. Observing SQL statements via `datasource-proxy`, and validating queries in integration tests using `SQLStatementCountValidator`\n4. Dynamic input validation using ValidationGroups | Completed |
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
README.md
(1 hunks)
🧰 Additional context used
🪛 Markdownlint (0.37.0)
README.md
8-8: Expected: 2; Actual: 4
Unordered list indentation
(MD007, ul-indent)
9-9: Expected: 2; Actual: 4
Unordered list indentation
(MD007, ul-indent)
10-10: Expected: 2; Actual: 4
Unordered list indentation
(MD007, ul-indent)
17-17: Column: 137
Hard tabs
(MD010, no-hard-tabs)
17-17: Column: 466
Hard tabs
(MD010, no-hard-tabs)
🔇 Additional comments (2)
README.md (2)
22-24
: LGTM - New project entries are well documented!
The new entries for Grafana LGTM, MongoDB/Elasticsearch integration, and OpenSearch Integration are clearly described with their specific functionalities and use cases.
Line range hint 1-50
: Documentation improvements look great!
The enhanced project descriptions provide clear, actionable information about each module's functionality and purpose. The consistent structure makes it easy for users to understand the repository's contents.
🧰 Tools
🪛 Markdownlint (0.37.0)
8-8: Expected: 2; Actual: 4
Unordered list indentation
(MD007, ul-indent)
9-9: Expected: 2; Actual: 4
Unordered list indentation
(MD007, ul-indent)
10-10: Expected: 2; Actual: 4
Unordered list indentation
(MD007, ul-indent)
17-17: Column: 137
Hard tabs
(MD010, no-hard-tabs)
17-17: Column: 466
Hard tabs
(MD010, no-hard-tabs)
Quality Gate passedIssues Measures |
@coderabbitai, please help me to update all ReadMe.md files present in this repo to provide more context and as much details as possible |
@rajadilipkolli, below are example enriched README.md contents for each directory, consolidated in one place for convenience. Each has additional context, usage details, references, and explanations beyond the original. Feel free to revise, pick, or merge these sections as you see fit. Updated README.md (Root)[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/rajadilipkolli/my-spring-boot-experiments)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
# Spring Boot Integration Experiments
This repository contains a collection of sample projects and experiments showcasing various Spring Boot integrations and features. The goal is to help you explore new possibilities, demonstrate best practices, and learn advanced concepts in a unified space.
---
## Table of Contents
- [Overview](#overview)
- [Projects](#projects)
- [Tech Stack](#tech-stack)
- [Useful Docker Commands](#useful-docker-commands)
- [Useful Git Commands](#useful-git-commands)
---
## Overview
Each subdirectory in this repository demonstrates a focused aspect of Spring Boot development ranging from database integrations, caching, messaging, and multi-tenancy to advanced topics like Chaos Engineering and reactive stacks. Many of these samples are production ready, while some are still works-in-progress (WIP) intended for demonstration or experimentation.
**Key Features**:
1. **Wide Range of Integrations**: Explore different databases (MySQL, PostgreSQL, MongoDB, Oracle), caching with Redis, and advanced topics like multi-tenancy.
2. **Observability & Monitoring**: Many samples include Prometheus, Grafana, or Kibana. They demonstrate setting up and analyzing application performance in real time.
3. **Scalability & Resilience Patterns**: Investigate chaos monkey for injecting controlled failures, or look at multi-database solutions for horizontal scaling.
---
## Projects
Below is a quick lookup table summarizing each sub-project. For more details, consult their individual README.md files.
| Project & Link | Description | Status |
|-------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|------------|
| [Spring Batch Implementation](./batch-boot-jpa-sample) | Demonstrates Spring Batch 5 with SBOM generation, straightforward configuration. | Completed |
| [Boot API ArchUnit Sample](./boot-api-archunit-sample) | Showcases architectural constraints using ArchUnit rules. | Completed |
| [Chaos Engineering with Chaos Monkey](./boot-chaos-monkey) | Applies Chaos Engineering principles in a Spring Boot app. Includes Gatling performance testing. | WIP |
| [Grafana LGTM Stack](./boot-grafana-lgtm) | Implements Loki, Grafana, Tempo, Mimir for observability, metrics, traces. | Completed |
| [MongoDB & Elasticsearch Reactive](./boot-mongodb-elasticsearch) | Integrates reactive MongoDB with reactive Elasticsearch. Demonstrates advanced queries and geospatial search. | WIP |
| [OpenSearch Integration](./boot-opensearch-sample) | Illustrates saving data and quick geospatial queries in OpenSearch. | Completed |
| [RabbitMQ Implementation](./boot-rabbitmq-thymeleaf) | Showcases reliable messaging, DLQ, a basic Thymeleaf UI, and producer confirmations. | Completed |
| [REST API Docs Sample](./boot-rest-docs-sample) | Generates PDF REST API documentation using Spring REST Docs. | Completed |
| [Strategy Design Pattern](./boot-strategy-plugin) | Explores the Strategy Pattern with a Spring application, building a native image via GraalVM. | Completed |
| [Feature Toggles (Togglz)](./boot-togglz-sample) | Dynamically enables/disables features at runtime using Togglz. | Completed |
| [Ultimate Redis Implementation](./boot-ultimate-redis) | Demonstrates advanced Redis usage patterns, sentinel support, TTL management, and cluster connections. | Completed |
| [GraphQL w/ QueryDSL](./graphql/boot-graphql-querydsl) | Integrates GraphQL with QueryDSL for advanced query generation. | WIP |
| [GraphQL w/ WebFlux](./graphql/boot-graphql-webflux) | Builds asynchronous data retrieval using GraphQL and reactive WebFlux stack. | Completed |
| [GraphQL w/ Spring MVC](./graphql/boot-graphql-webmvc) | Combines classic Spring MVC with GraphQL for synchronous data handling. | WIP |
| [Custom Sequence & LazyConnectionDataSourceProxy](./jpa/boot-data-customsequence) | Explores custom sequence generators, lazy DB connections, logging SQL statements, dynamic input validations, etc. | Completed |
| [Hibernate Envers (Spring Data)](./jpa/boot-data-envers) | Audits entity changes through Hibernate Envers, also demonstrates advanced monitoring. | Completed |
| [Multiple Data Sources](./jpa/boot-data-multipledatasources) | Demonstrates connecting to multiple SQL databases in the same Spring Boot app. | Completed |
| [Hibernate 2nd Level Cache Redis](./jpa/boot-hibernate2ndlevelcache-sample) | Enables second-level caching via Redis for improved performance, tested with custom repositories. | Completed |
| [Read Replica Postgres Setup](./jpa/boot-read-replica-postgresql) | Illustrates read/write separation with primary/replica in Postgres, optimizing connections with `LazyConnectionDataSourceProxy`. | Completed |
| [Keyset Pagination (Blaze Persistence)](./jpa/keyset-pagination/blaze-persistence) | Demonstrates efficient paging with dynamic queries. | Completed |
| [Keyset Pagination (Spring Data JPA)](./jpa/keyset-pagination/boot-data-window-pagination) | Offers another approach to keyset pagination with JPA. | Completed |
| [MultiTenancy with Multiple DataSources](./jpa/multitenancy/multidatasource-multitenancy) | Explores multi-tenant architecture using multiple data sources. | Completed |
| [MultiTenancy: DB-based](./jpa/multitenancy/multitenancy-db) | Assigns a dedicated database for each tenant. | Completed |
| [MultiTenancy: Partition-based](./jpa/multitenancy/partition) | Stores data for multiple tenants in a single table, partitioned by tenant ID. | Completed |
| [MultiTenancy: Schema-based](./jpa/multitenancy/schema) | Creates separate schemas for each tenant within one database. | Completed |
| [Reactive SQL with jOOQ](./r2dbc/boot-jooq-r2dbc-sample) | Combines jOOQ with R2DBC for fully reactive SQL operations. | Completed |
| [Reactive Cache with Redis](./r2dbc/boot-r2dbc-reactive-cache) | Demonstrates caching reactive database calls for performance gains. | Completed |
| [Reactive CRUD with R2DBC](./r2dbc/boot-r2dbc-sample) | Shows end-to-end reactive CRUD workflow using R2DBC. | Completed |
| [BackgroundJobs w/ JobRunr](./scheduler/boot-scheduler-jobrunr) | Sets up background job scheduling for asynchronous tasks using JobRunr. | Completed |
| [Scheduling w/ Quartz](./scheduler/boot-scheduler-quartz) | Implements Quartz-based scheduling with a Thymeleaf UI for controlling these jobs. | Completed |
| [Scheduling DB Distributed Locks with ShedLock](./scheduler/boot-scheduler-shedlock) | Ensures only one job runs across multiple instances using ShedLock. | Completed |
---
## Tech Stack
This repository leverages a broad stack of technologies, including:
- **Java** / **JavaScript** / **SQL** for core logic & data.
- **Spring Framework** (Boot, Data, Security, etc.) as the key application framework.
- **Project Reactor** for reactive data flows and concurrency.
- **QueryDSL**, **Liquibase**, **Flyway**, **JOOQ** for advanced database interactions and migrations.
- **Docker**, **Docker Compose** for containerization and multi-service orchestration.
- **RabbitMQ**, **Redis**, **Elasticsearch**, **OpenSearch**, **MongoDB** for messaging, caching, and search.
- **Gradle** / **Maven** for builds and dependency management.
- **GitHub Actions**, **CircleCI**, **Jenkins** for CI/CD pipelines.
For in-depth version references, visit [techstack.md](/techstack.md) or see individual project READMEs.
---
## Useful Docker Commands
```shell
# Start Postgres and pgAdmin
docker compose up postgres pgadmin4
# Clean up everything
docker system prune -a -f --volumes
# Remove unused volumes
docker volume prune
# List running containers
docker container ls Useful Git Commands# Temporarily stash local changes
git stash
# Pull remote changes
git pull
# Revert a specific commit by its hash
git revert <commit-hash> Additional Resources:
Updated boot-chaos-monkey/README.md# Spring Boot Chaos Monkey
This module explores Chaos Engineering principles by intentionally injecting failures into a Spring Boot application to test its resilience. It demonstrates how to set up and integrate `chaos-monkey-spring-boot` for your microservices, as well as performance testing with Gatling to measure any degradation under chaos scenarios.
## Key Features
1. **Chaos Injection**: Simulate random latencies, exceptions, or resources unavailability.
2. **Performance Testing** (Gatling): Benchmark throughput and latency under chaotic conditions.
3. **Monitoring**: Validate that chaos is functioning by observing logs, metrics, or custom dashboards.
## Setup & Usage
1. **Build**:
```shell
./mvnw clean verify
Useful Links
Advanced Tips & Tricks
Run Tests./mvnw clean verify Run Locallydocker-compose -f docker/docker-compose.yml up -d
./mvnw spring-boot:run -Dspring-boot.run.profiles=local Building a Native Image./mvnw native:compile -Pnative References
Testing./mvnw clean verify Notes
Useful Links
QueryingYou can use either:
Testing./mvnw clean verify Additional Info
This boots up a Postgres primary, a replica, and pgAdmin. Useful Commands./mvnw clean verify
Observing Logs
Notes
Check the logs to confirm the database is ready. Testing./mvnw clean verify Includes integration tests demonstrating the pagination approach. Advanced Usage
Useful Links
./mvnw clean verify for tests. References
Setupdocker-compose -f docker/docker-compose.yml up -d
./mvnw spring-boot:run -Dspring-boot.run.profiles=local Testing./mvnw clean verify How It Works
Useful Links
Run Locallydocker-compose -f docker/docker-compose.yml up -d
./mvnw spring-boot:run -Dspring-boot.run.profiles=local Observability
Observability Tools
Additional Notes
Highlights
References
Key Pointers
Additional Tools
References
Dev-Time with Testcontainers./mvnw spring-boot:test-run Runs integration tests with ephemeral containers. Links
Observability
Running & Testingdocker-compose -f docker/docker-compose.yml up -d
./mvnw clean verify
./mvnw spring-boot:run -Dspring-boot.run.profiles=local References
Check logs or your DB table to see the distributed locks in action. References
Check:
Testing./mvnw clean verify Additional Info
Usage
Useful Links
Notes
Key Files
Observing Results
Example UsageCheck out Helpful Links
Notes
#!/bin/bash Let's find and display the content of all files named readme.md (case-insensitive) across the entire repository.Once we retrieve the contents, we will propose updated documentation for each file.fd -i "readme.md" --exec cat {} ;
|
Summary by CodeRabbit
README.md
, including new entries for Grafana LGTM, Mongodb and Elasticsearch Reactive integration, and Opensearch Integration.spring-boot-chaos-monkey
project README for clarity and consistency.boot-strategy-plugin
README.