Skip to content

Commit 344bd0b

Browse files
Merge pull request #3 from tusharkhatriofficial/dev
Complete ComprehensiveMetricsService code | create MetricsController …
2 parents 5bb40f1 + 56dba4b commit 344bd0b

5 files changed

Lines changed: 559 additions & 4 deletions

File tree

0 Bytes
Binary file not shown.

src/main/java/com/eventara/analytics/kafka/KafkaStreamsConfig.java renamed to src/main/java/com/eventara/analytics/config/KafkaStreamsConfig.java

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,53 @@
1-
package com.eventara.analytics.kafka;
1+
package com.eventara.analytics.config;
22
import org.apache.kafka.common.serialization.Serdes;
3+
import org.apache.kafka.streams.StreamsBuilder;
34
import org.apache.kafka.streams.StreamsConfig;
5+
import org.apache.kafka.streams.kstream.KStream;
46
import org.springframework.beans.factory.annotation.Value;
57
import org.springframework.context.annotation.Bean;
68
import org.springframework.context.annotation.Configuration;
79
import org.springframework.kafka.annotation.EnableKafkaStreams;
810
import org.springframework.kafka.annotation.KafkaStreamsDefaultConfiguration;
911
import org.springframework.kafka.config.KafkaStreamsConfiguration;
12+
1013
import java.util.HashMap;
1114
import java.util.Map;
1215

1316
@Configuration
14-
@EnableKafkaStreams
17+
//@EnableKafkaStreams
1518
public class KafkaStreamsConfig {
1619

1720
@Value("${spring.kafka.bootstrap-servers}")
1821
private String bootstrapServers;
1922

2023
@Bean(name = KafkaStreamsDefaultConfiguration.DEFAULT_STREAMS_CONFIG_BEAN_NAME)
21-
public KafkaStreamsConfiguration kStreamsConfig(){
24+
public KafkaStreamsConfiguration kStreamsConfig() {
2225
Map<String, Object> props = new HashMap<>();
23-
props.put(StreamsConfig.APPLICATION_ID_CONFIG, "eventara-streams");
26+
27+
// Basic configuration
28+
props.put(StreamsConfig.APPLICATION_ID_CONFIG, "eventara-analytics");
2429
props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
30+
31+
// Serialization
2532
props.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass());
2633
props.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass());
2734

35+
// Performance tuning
36+
props.put(StreamsConfig.NUM_STREAM_THREADS_CONFIG, 2);
37+
props.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 1000);
38+
2839
return new KafkaStreamsConfiguration(props);
2940
}
41+
42+
43+
44+
// @Bean
45+
// public KStream<String, String> analyticsStream(StreamsBuilder builder) {
46+
// KStream<String, String> stream = builder.stream("eventara.events.raw");
47+
// stream.peek((key, value) -> System.out.println("Received raw event: " + value));
48+
//// stream.peek((key, value) -> System.out.println("Received: " + value))
49+
//// .to("analytics-output");
50+
//
51+
// return stream;
52+
// }
3053
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.eventara.analytics.controller;
2+
3+
import com.eventara.analytics.service.ComprehensiveMetricsService;
4+
import com.eventara.common.dto.ComprehensiveMetricsDto;
5+
import io.swagger.v3.oas.annotations.Operation;
6+
import io.swagger.v3.oas.annotations.tags.Tag;
7+
import org.springframework.beans.factory.annotation.Autowired;
8+
import org.springframework.http.ResponseEntity;
9+
import org.springframework.web.bind.annotation.*;
10+
11+
@RestController
12+
@RequestMapping("/api/v1/metrics")
13+
@Tag(name = "Analytics", description = "Comprehensive real-time event analytics")
14+
public class MetricsController {
15+
16+
@Autowired
17+
private ComprehensiveMetricsService metricsService;
18+
19+
@GetMapping
20+
@Operation(summary = "Get comprehensive metrics")
21+
public ResponseEntity<ComprehensiveMetricsDto> getMetrics() {
22+
return ResponseEntity.ok(metricsService.getComprehensiveMetrics());
23+
}
24+
25+
@PostMapping("/reset")
26+
@Operation(summary = "Reset all metrics")
27+
public ResponseEntity<String> resetMetrics() {
28+
metricsService.resetMetrics();
29+
return ResponseEntity.ok("Metrics reset successfully");
30+
}
31+
}

0 commit comments

Comments
 (0)