How anurag171/springboot-apachepulsar-jwt works
This is a five-service IoT telemetry pipeline: simulated devices generate readings from stored device definitions, publish events to Pulsar, and a consumer validates and stores them in MongoDB. Users authenticate to the metrics API, then query aggregates by sensor or sensor group over a time interval. The README documents gateway routing and Eureka discovery. API handler, router, authentication, and client source excerpts support the internal links shown; the storage and infrastructure links follow the README, since their implementation was not sampled.
Main entry points: DataConsumer.java Event consumer · MetricsRouter.java Metrics routes · AuthenticationController.java Login endpoint · MetricGatewayApplication.java Metric gateway
Components 26
Device simulation
- Client service
IotClient/src/main/java/com/anurag/iot/client/IopClientApplication.java - Data initializer
IotClient/src/main/java/com/anurag/iot/client/initialize/IotDataInitializer.java - Device definitions
IotClient/src/main/java/com/anurag/iot/client/data/IotDataMaster.java - Event producer
IotClient/src/main/java/com/anurag/iot/client/service/Producer.java - Device repository
IotClient/src/main/java/com/anurag/iot/client/repository/IotDataReactiveRepository.java
Event ingestion
- Consumer service
DataStore/src/main/java/com/anurag/iot/data/consumer/DataStoreApplication.java - Event consumer
DataStore/src/main/java/com/anurag/iot/data/consumer/service/DataConsumer.java - Data validation
DataStore/src/main/java/com/anurag/iot/data/consumer/data/IotData.java - Mongo operations
DataStore/src/main/java/com/anurag/iot/data/consumer/dao/MongoDbOperations.java
Metrics API
- Metrics API
IotMetricsApi/src/main/java/com/anurag/iot/data/api/IotMetricsApiApplication.java - Metrics routes
IotMetricsApi/src/main/java/com/anurag/iot/data/api/router/MetricsRouter.java - Request validation
IotMetricsApi/src/main/java/com/anurag/iot/data/api/filter/MetricHandlerFilterFunction.java - Metric handlers
IotMetricsApi/src/main/java/com/anurag/iot/data/api/handler/MetricsHandler.java - Metrics queries
IotMetricsApi/src/main/java/com/anurag/iot/data/api/repository/MetricsDao.java
API security
- Login endpoint
IotMetricsApi/src/main/java/com/anurag/iot/data/api/security/AuthenticationController.java - User lookup
IotMetricsApi/src/main/java/com/anurag/iot/data/api/security/UserService.java - JWT utility
IotMetricsApi/src/main/java/com/anurag/iot/data/api/security/JWTUtil.java - Bearer context
IotMetricsApi/src/main/java/com/anurag/iot/data/api/security/SecurityContextRepository.java - Token validation
IotMetricsApi/src/main/java/com/anurag/iot/data/api/security/AuthenticationManager.java
Service routing
- Metric gateway
MetricGateway/src/main/java/com/anurag/iot/data/gateway/MetricGateway/MetricGatewayApplication.java - Eureka discovery
MetricDiscovery/src/main/java/com/anurag/iop/data/discovery/MetricDiscovery/MetricDiscoveryApplication.java
Other components
- IoT devices
- Device MongoDB
- Pulsar topic
- IOTDATA collection
- API user
Connections 26
- IoT devices → Client service: simulates readings
- Client service → Data initializer: initializes data
- Data initializer → Device repository: stores definitions
- Device repository → Device MongoDB: reads and writes
- Event producer → Device definitions: uses bounds
- Event producer → Pulsar topic: publishes events
- Pulsar topic → Event consumer: delivers events
- Consumer service → Event consumer: runs
- Event consumer → Data validation: validates fields
- Event consumer → Mongo operations: persists data
- Mongo operations → IOTDATA collection: writes records
- API user → Metric gateway: sends requests
- Metric gateway → Eureka discovery: finds instances
- Metric gateway → Metrics API: routes requests
- Eureka discovery → Metrics API: registers service
- API user → Login endpoint: submits credentials
- Login endpoint → User lookup: looks up user
- Login endpoint → JWT utility: issues token
- API user → Bearer context: sends bearer token
- Bearer context → Token validation: authenticates token
- Token validation → JWT utility: validates token
- Metrics API → Metrics routes: serves routes
- Metrics routes → Request validation: filters requests
- Metrics routes → Metric handlers: dispatches routes
- Metric handlers → Metrics queries: queries metrics
- Metrics queries → IOTDATA collection: reads records