# DRA CLR Hierarchy Dispatcher Microservice

A Spring Boot microservice that consumes Kafka messages and processes hierarchy data, storing results in MongoDB.

## Tech Stack

- Java 25
- Spring Boot 4.0.6
- Maven
- Spring Kafka with manual acknowledgment
- Spring Data MongoDB
- Lombok
- JUnit 5 and Mockito

## Features

- Concurrent Kafka consumers for parallel processing
- Manual acknowledgment to ensure data consistency
- Thread-safe business logic
- Comprehensive error handling and logging
- Unit tests with mocks

## Configuration

Configure the following in `application.yml`:

- Kafka bootstrap servers
- Consumer group ID
- MongoDB URI
- Concurrency level for Kafka listeners
- Topic name

## Running the Application

1. Ensure Kafka and MongoDB are running.
2. Run `mvn spring-boot:run`

## Testing

Run `mvn test` to execute unit tests.

## Assumptions

1. Kafka payload is JSON and deserializes to `KafkaMessage` class.
2. MongoDB collections exist with proper indexes (unique index on `trackNo`, `trackExt`, `status` for `group_process_status`).
3. Concurrent processing is safe due to MongoDB atomic operations and unique constraints.
4. Payload JSON is stored as string in audit log.