# mahe1487/rabbitmq architecture

> Architecture diagram of the GitHub repository mahe1487/rabbitmq, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mahe1487/rabbitmq
- Repository: https://github.com/mahe1487/rabbitmq

## Overview

EazyBank is a microservices banking application with account, card, and loan capabilities, plus gateway, configuration, discovery, and messaging services. The visible user workflow enters through Accounts APIs: customers can create, fetch, update, or delete accounts; a separate customer-details endpoint gathers account, card, and loan data. Account creation persists customer and account records and emits a communication request. Card and loan services provide their own domain capabilities. Source excerpts support several internal calls, but gateway routing, service registration, and message-consumer wiring are not shown, so those relationships are omitted.

Main entry points: [`accounts/src/main/java/com/eazybytes/accounts/service/impl/CustomerServiceImpl.java`](https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/service/impl/CustomerServiceImpl.java) (Customer aggregation), [`accounts/src/main/java/com/eazybytes/accounts/service/impl/AccountsServiceImpl.java`](https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/service/impl/AccountsServiceImpl.java) (Account operations), [`accounts/src/main/java/com/eazybytes/accounts/controller/AccountsController.java`](https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/controller/AccountsController.java) (Account APIs), [`cards/src/main/java/com/eazybytes/cards/repository/CardsRepository.java`](https://github.com/mahe1487/rabbitmq/blob/main/cards/src/main/java/com/eazybytes/cards/repository/CardsRepository.java) (Card repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and platform"]
  node_gateway["API gateway"]
  node_security["Gateway security"]
  node_trace["Request tracing"]
  node_config["Configuration server"]
  node_discovery["Service discovery"]
end

subgraph group_accounts["Accounts domain"]
  node_account_api["Account APIs"]
  node_customer_api["Customer details API"]
  node_account_service["Account operations"]
  node_customer_service["Customer aggregation"]
  node_account_records["Customer and account records<br/>[Accounts.java]"]
  node_account_repositories["Account repositories"]
  node_account_mapping["Account mapping"]
  node_account_contracts["Account data contracts"]
  node_cards_client["Cards client"]
  node_loans_client["Loans client"]
end

subgraph group_products["Banking products"]
  node_cards_api["Cards API"]
  node_cards_service["Card operations"]
  node_cards_records["Card records<br/>[Cards.java]"]
  node_cards_repository["Card repository"]
  node_loans_api["Loans API"]
  node_loans_service["Loan operations"]
  node_loans_records["Loan records<br/>[Loans.java]"]
  node_loans_repository["Loan repository"]
end

subgraph group_messaging["Messaging"]
  node_broker["Message broker"]
  node_message_consumer["Message function"]
end

node_customer(("Bank customer"))

node_customer -->|"uses"| node_account_api
node_account_api -->|"calls"| node_account_service
node_customer_api -->|"calls"| node_customer_service
node_account_service -->|"reads and writes"| node_account_repositories
node_account_service -->|"maps records"| node_account_mapping
node_account_service -->|"sends request"| node_broker
node_customer_service -->|"reads"| node_account_repositories
node_customer_service -->|"maps records"| node_account_mapping
node_customer_service -->|"fetches card data"| node_cards_client
node_customer_service -->|"fetches loan data"| node_loans_client
node_cards_service -->|"reads and writes"| node_cards_repository
node_cards_repository -->|"persists"| node_cards_records

click node_gateway "https://github.com/mahe1487/rabbitmq/blob/main/gatewayserver/src/main/java/com/eazybytes/gatewayserver/GatewayserverApplication.java"
click node_security "https://github.com/mahe1487/rabbitmq/blob/main/gatewayserver/src/main/java/com/eazybytes/gatewayserver/config/securityConfig.java"
click node_trace "https://github.com/mahe1487/rabbitmq/blob/main/gatewayserver/src/main/java/com/eazybytes/gatewayserver/filter/RequestTraceFilter.java"
click node_config "https://github.com/mahe1487/rabbitmq/blob/main/configserver/src/main/java/com/eazybytes/configserver/ConfigserverApplication.java"
click node_discovery "https://github.com/mahe1487/rabbitmq/blob/main/eurekaserver/src/main/java/com/eazybytes/eurekaserver/EurekaserverApplication.java"
click node_account_api "https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/controller/AccountsController.java"
click node_customer_api "https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/controller/CustomerController.java"
click node_account_service "https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/service/impl/AccountsServiceImpl.java"
click node_customer_service "https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/service/impl/CustomerServiceImpl.java"
click node_account_records "https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/entity/Accounts.java"
click node_account_repositories "https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/repository/AccountsRepository.java"
click node_account_mapping "https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/mapper/Accountsmapper.java"
click node_account_contracts "https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/dto/CustomerDetailsDto.java"
click node_cards_api "https://github.com/mahe1487/rabbitmq/blob/main/cards/src/main/java/com/eazybytes/cards/controller/CardsController.java"
click node_cards_service "https://github.com/mahe1487/rabbitmq/blob/main/cards/src/main/java/com/eazybytes/cards/service/impl/CardsServiceImpl.java"
click node_cards_records "https://github.com/mahe1487/rabbitmq/blob/main/cards/src/main/java/com/eazybytes/cards/entity/Cards.java"
click node_cards_repository "https://github.com/mahe1487/rabbitmq/blob/main/cards/src/main/java/com/eazybytes/cards/repository/CardsRepository.java"
click node_loans_api "https://github.com/mahe1487/rabbitmq/blob/main/loans/src/main/java/com/eazybytes/loans/controller/LoansController.java"
click node_loans_service "https://github.com/mahe1487/rabbitmq/blob/main/loans/src/main/java/com/eazybytes/loans/service/impl/LoansServiceImpl.java"
click node_loans_records "https://github.com/mahe1487/rabbitmq/blob/main/loans/src/main/java/com/eazybytes/loans/entity/Loans.java"
click node_loans_repository "https://github.com/mahe1487/rabbitmq/blob/main/loans/src/main/java/com/eazybytes/loans/repository/LoansRepository.java"
click node_cards_client "https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/service/client/CardsFeignClient.java"
click node_loans_client "https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/service/client/LoansFeignClient.java"
click node_message_consumer "https://github.com/mahe1487/rabbitmq/blob/main/message/src/main/java/com/eazybytes/message/functions/MessageFunctions.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_gateway,node_security,node_trace,node_config,node_discovery toneBlue
class node_account_api,node_customer_api,node_account_service,node_customer_service,node_account_records,node_account_repositories,node_account_mapping,node_account_contracts,node_cards_client,node_loans_client toneAmber
class node_cards_api,node_cards_service,node_cards_records,node_cards_repository,node_loans_api,node_loans_service,node_loans_records,node_loans_repository toneMint
class node_broker,node_message_consumer toneRose
class node_customer toneIndigo
```

## Components

### Access and platform

- [API gateway](https://github.com/mahe1487/rabbitmq/blob/main/gatewayserver/src/main/java/com/eazybytes/gatewayserver/GatewayserverApplication.java): `gatewayserver/src/main/java/com/eazybytes/gatewayserver/GatewayserverApplication.java`
- [Gateway security](https://github.com/mahe1487/rabbitmq/blob/main/gatewayserver/src/main/java/com/eazybytes/gatewayserver/config/securityConfig.java): `gatewayserver/src/main/java/com/eazybytes/gatewayserver/config/securityConfig.java`
- [Request tracing](https://github.com/mahe1487/rabbitmq/blob/main/gatewayserver/src/main/java/com/eazybytes/gatewayserver/filter/RequestTraceFilter.java): `gatewayserver/src/main/java/com/eazybytes/gatewayserver/filter/RequestTraceFilter.java`
- [Configuration server](https://github.com/mahe1487/rabbitmq/blob/main/configserver/src/main/java/com/eazybytes/configserver/ConfigserverApplication.java): `configserver/src/main/java/com/eazybytes/configserver/ConfigserverApplication.java`
- [Service discovery](https://github.com/mahe1487/rabbitmq/blob/main/eurekaserver/src/main/java/com/eazybytes/eurekaserver/EurekaserverApplication.java): `eurekaserver/src/main/java/com/eazybytes/eurekaserver/EurekaserverApplication.java`

### Accounts domain

- [Account APIs](https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/controller/AccountsController.java): `accounts/src/main/java/com/eazybytes/accounts/controller/AccountsController.java`
- [Customer details API](https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/controller/CustomerController.java): `accounts/src/main/java/com/eazybytes/accounts/controller/CustomerController.java`
- [Account operations](https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/service/impl/AccountsServiceImpl.java): `accounts/src/main/java/com/eazybytes/accounts/service/impl/AccountsServiceImpl.java`
- [Customer aggregation](https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/service/impl/CustomerServiceImpl.java): `accounts/src/main/java/com/eazybytes/accounts/service/impl/CustomerServiceImpl.java`
- [Customer and account records](https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/entity/Accounts.java): `accounts/src/main/java/com/eazybytes/accounts/entity/Accounts.java`
- [Account repositories](https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/repository/AccountsRepository.java): `accounts/src/main/java/com/eazybytes/accounts/repository/AccountsRepository.java`
- [Account mapping](https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/mapper/Accountsmapper.java): `accounts/src/main/java/com/eazybytes/accounts/mapper/Accountsmapper.java`
- [Account data contracts](https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/dto/CustomerDetailsDto.java): `accounts/src/main/java/com/eazybytes/accounts/dto/CustomerDetailsDto.java`
- [Cards client](https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/service/client/CardsFeignClient.java): `accounts/src/main/java/com/eazybytes/accounts/service/client/CardsFeignClient.java`
- [Loans client](https://github.com/mahe1487/rabbitmq/blob/main/accounts/src/main/java/com/eazybytes/accounts/service/client/LoansFeignClient.java): `accounts/src/main/java/com/eazybytes/accounts/service/client/LoansFeignClient.java`

### Banking products

- [Cards API](https://github.com/mahe1487/rabbitmq/blob/main/cards/src/main/java/com/eazybytes/cards/controller/CardsController.java): `cards/src/main/java/com/eazybytes/cards/controller/CardsController.java`
- [Card operations](https://github.com/mahe1487/rabbitmq/blob/main/cards/src/main/java/com/eazybytes/cards/service/impl/CardsServiceImpl.java): `cards/src/main/java/com/eazybytes/cards/service/impl/CardsServiceImpl.java`
- [Card records](https://github.com/mahe1487/rabbitmq/blob/main/cards/src/main/java/com/eazybytes/cards/entity/Cards.java): `cards/src/main/java/com/eazybytes/cards/entity/Cards.java`
- [Card repository](https://github.com/mahe1487/rabbitmq/blob/main/cards/src/main/java/com/eazybytes/cards/repository/CardsRepository.java): `cards/src/main/java/com/eazybytes/cards/repository/CardsRepository.java`
- [Loans API](https://github.com/mahe1487/rabbitmq/blob/main/loans/src/main/java/com/eazybytes/loans/controller/LoansController.java): `loans/src/main/java/com/eazybytes/loans/controller/LoansController.java`
- [Loan operations](https://github.com/mahe1487/rabbitmq/blob/main/loans/src/main/java/com/eazybytes/loans/service/impl/LoansServiceImpl.java): `loans/src/main/java/com/eazybytes/loans/service/impl/LoansServiceImpl.java`
- [Loan records](https://github.com/mahe1487/rabbitmq/blob/main/loans/src/main/java/com/eazybytes/loans/entity/Loans.java): `loans/src/main/java/com/eazybytes/loans/entity/Loans.java`
- [Loan repository](https://github.com/mahe1487/rabbitmq/blob/main/loans/src/main/java/com/eazybytes/loans/repository/LoansRepository.java): `loans/src/main/java/com/eazybytes/loans/repository/LoansRepository.java`

### Messaging

- **Message broker**
- [Message function](https://github.com/mahe1487/rabbitmq/blob/main/message/src/main/java/com/eazybytes/message/functions/MessageFunctions.java): `message/src/main/java/com/eazybytes/message/functions/MessageFunctions.java`

### Other components

- **Bank customer**

## Connections

- Bank customer → Account APIs: uses (evidence: `accounts/src/main/java/com/eazybytes/accounts/controller/AccountsController.java`)
- Account APIs → Account operations: calls (evidence: `accounts/src/main/java/com/eazybytes/accounts/controller/AccountsController.java`)
- Customer details API → Customer aggregation: calls (evidence: `accounts/src/main/java/com/eazybytes/accounts/controller/CustomerController.java`)
- Account operations → Account repositories: reads and writes (evidence: `accounts/src/main/java/com/eazybytes/accounts/service/impl/AccountsServiceImpl.java`)
- Account operations → Account mapping: maps records (evidence: `accounts/src/main/java/com/eazybytes/accounts/service/impl/AccountsServiceImpl.java`)
- Account operations → Message broker: sends request (evidence: `accounts/src/main/java/com/eazybytes/accounts/service/impl/AccountsServiceImpl.java`)
- Customer aggregation → Account repositories: reads (evidence: `accounts/src/main/java/com/eazybytes/accounts/service/impl/CustomerServiceImpl.java`)
- Customer aggregation → Account mapping: maps records (evidence: `accounts/src/main/java/com/eazybytes/accounts/service/impl/CustomerServiceImpl.java`)
- Customer aggregation → Cards client: fetches card data (evidence: `accounts/src/main/java/com/eazybytes/accounts/service/impl/CustomerServiceImpl.java`)
- Customer aggregation → Loans client: fetches loan data (evidence: `accounts/src/main/java/com/eazybytes/accounts/service/impl/CustomerServiceImpl.java`)
- Card operations → Card repository: reads and writes (evidence: `cards/src/main/java/com/eazybytes/cards/service/impl/CardsServiceImpl.java`)
- Card repository → Card records: persists (evidence: `cards/src/main/java/com/eazybytes/cards/repository/CardsRepository.java`)
