# ujjal303/kafka-producer architecture

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

- Interactive diagram: https://gitdiagram.com/ujjal303/kafka-producer
- Repository: https://github.com/ujjal303/kafka-producer

## Overview

This Spring Boot service exposes HTTP endpoints for publishing messages and customer events to Kafka, and for deleting Kafka topics. Its producer also has an employee-event publishing method, though no sampled controller route invokes it. Kafka configuration declares the producer template, admin client, and two topics. The README is empty; the graph reflects the supplied source excerpts, so unsampled wiring is omitted.

Main entry points: [`src/main/java/com/ujjal/kafka/config/KafkaConfig.java`](https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/config/KafkaConfig.java) (Kafka Configuration), [`src/main/java/com/ujjal/kafka/service/KafkaAvroProducer.java`](https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/service/KafkaAvroProducer.java) (Kafka Producer), [`src/main/java/com/ujjal/kafka/controller/EventController.java`](https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/controller/EventController.java) (Event Controller), [`src/main/java/com/ujjal/kafka/models/MessageBody.java`](https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/models/MessageBody.java) (Message Payload)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_controller["Event Controller"]
end

subgraph group_producer["Kafka Production"]
  node_producer_service["Kafka Producer"]
  node_kafka_template["Kafka Templates<br/>[KafkaConfig.java]"]
  node_admin_client["Admin Client<br/>[KafkaConfig.java]"]
end

subgraph group_config["Kafka Setup"]
  node_kafka_config["Kafka Configuration<br/>[KafkaConfig.java]"]
end

subgraph group_models["Event Models"]
  node_message["Message Payload<br/>[MessageBody.java]"]
  node_customer["Customer Detail"]
  node_delete_request["Topic Request"]
  node_employee["Employee Record<br/>[Employee.java]"]
end

node_client(("HTTP Client"))
node_broker["Kafka Broker"]

node_client -->|"HTTP requests"| node_controller
node_client -->|"sends payload"| node_message
node_client -->|"sends payload"| node_customer
node_client -->|"sends payload"| node_delete_request
node_controller -->|"dispatches"| node_producer_service
node_producer_service -->|"sends records"| node_kafka_template
node_producer_service -->|"deletes topics"| node_admin_client
node_kafka_config -->|"creates"| node_kafka_template
node_kafka_config -->|"creates"| node_admin_client
node_kafka_config -->|"declares topics"| node_broker
node_kafka_template -->|"publishes records"| node_broker
node_admin_client -->|"deletes topics"| node_broker

click node_controller "https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/controller/EventController.java"
click node_message "https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/models/MessageBody.java"
click node_customer "https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/models/CustomerDetail.java"
click node_delete_request "https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/models/DeleteTopicsRequest.java"
click node_employee "https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/models/Employee.java"
click node_producer_service "https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/service/KafkaAvroProducer.java"
click node_kafka_template "https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/config/KafkaConfig.java"
click node_admin_client "https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/config/KafkaConfig.java"
click node_kafka_config "https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/config/KafkaConfig.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_controller,node_client toneBlue
class node_producer_service,node_kafka_template,node_admin_client toneAmber
class node_kafka_config toneMint
class node_message,node_customer,node_delete_request,node_employee toneRose
class node_broker toneIndigo
```

## Components

### HTTP API

- [Event Controller](https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/controller/EventController.java): `src/main/java/com/ujjal/kafka/controller/EventController.java`

### Kafka Production

- [Kafka Producer](https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/service/KafkaAvroProducer.java): `src/main/java/com/ujjal/kafka/service/KafkaAvroProducer.java`
- [Kafka Templates](https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/config/KafkaConfig.java): `src/main/java/com/ujjal/kafka/config/KafkaConfig.java`
- [Admin Client](https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/config/KafkaConfig.java): `src/main/java/com/ujjal/kafka/config/KafkaConfig.java`

### Kafka Setup

- [Kafka Configuration](https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/config/KafkaConfig.java): `src/main/java/com/ujjal/kafka/config/KafkaConfig.java`

### Event Models

- [Message Payload](https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/models/MessageBody.java): `src/main/java/com/ujjal/kafka/models/MessageBody.java`
- [Customer Detail](https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/models/CustomerDetail.java): `src/main/java/com/ujjal/kafka/models/CustomerDetail.java`
- [Topic Request](https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/models/DeleteTopicsRequest.java): `src/main/java/com/ujjal/kafka/models/DeleteTopicsRequest.java`
- [Employee Record](https://github.com/ujjal303/kafka-producer/blob/main/src/main/java/com/ujjal/kafka/models/Employee.java): `src/main/java/com/ujjal/kafka/models/Employee.java`

### Other components

- **HTTP Client**
- **Kafka Broker**

## Connections

- HTTP Client → Event Controller: HTTP requests
- HTTP Client → Message Payload: sends payload
- HTTP Client → Customer Detail: sends payload
- HTTP Client → Topic Request: sends payload
- Event Controller → Kafka Producer: dispatches
- Kafka Producer → Kafka Templates: sends records
- Kafka Producer → Admin Client: deletes topics
- Kafka Configuration → Kafka Templates: creates
- Kafka Configuration → Admin Client: creates
- Kafka Configuration → Kafka Broker: declares topics
- Kafka Templates → Kafka Broker: publishes records
- Admin Client → Kafka Broker: deletes topics
