Skip to content

Commit f16fb4f

Browse files
committed
fixed the printing statements & used log function
1 parent 6b1fefd commit f16fb4f

File tree

3 files changed

+33
-23
lines changed

3 files changed

+33
-23
lines changed

polling-publisher/polling-service/src/main/java/com/iluwatar/polling/DataSourceService.java

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -27,36 +27,40 @@
2727

2828
import java.util.Map;
2929
import java.util.Random;
30+
import java.util.concurrent.Executors;
31+
import java.util.concurrent.ScheduledExecutorService;
32+
import java.util.concurrent.TimeUnit;
33+
import org.slf4j.Logger;
34+
import org.slf4j.LoggerFactory;
3035
import org.springframework.stereotype.Service;
3136

32-
/** This class is responsible for keep the events. */
37+
/** This class is responsible for keeping the events. */
3338
@Service
3439
public class DataSourceService {
3540

41+
private static final Logger log = LoggerFactory.getLogger(DataSourceService.class);
42+
3643
private final DataRepository repository;
44+
private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
3745

3846
/** Constructor & Scheduler to push random data. */
3947
public DataSourceService(DataRepository repository) {
4048
this.repository = repository;
49+
scheduleDataGeneration();
50+
}
4151

42-
// Start a separate thread to add data every 3 seconds
43-
new Thread(
44-
() -> {
45-
Random random = new Random();
46-
while (true) {
47-
try {
48-
Thread.sleep(3000); // Add data every 3 seconds
49-
int id = random.nextInt(100); // Random ID
50-
String value = "Auto-Data-" + id;
51-
this.addData(id, value);
52-
System.out.println("🔵 Data Added: " + id + " -> " + value);
53-
} catch (InterruptedException e) {
54-
Thread.currentThread().interrupt();
55-
break;
56-
}
57-
}
58-
})
59-
.start();
52+
private void scheduleDataGeneration() {
53+
Random random = new Random();
54+
scheduler.scheduleAtFixedRate(
55+
() -> {
56+
int id = random.nextInt(100); // Random ID
57+
String value = "Auto-Data-" + id;
58+
this.addData(id, value);
59+
log.info("🔵 Data Added: {} -> {}", id, value);
60+
},
61+
0,
62+
3,
63+
TimeUnit.SECONDS);
6064
}
6165

6266
public void addData(int id, String value) {

polling-publisher/polling-service/src/main/java/com/iluwatar/polling/PollingScheduler.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
package com.iluwatar.polling;
2727

2828
import java.util.Random;
29+
import org.slf4j.Logger;
30+
import org.slf4j.LoggerFactory;
2931
import org.springframework.beans.factory.annotation.Autowired;
3032
import org.springframework.scheduling.annotation.Scheduled;
3133
import org.springframework.stereotype.Component;
@@ -34,6 +36,7 @@
3436
@Component
3537
public class PollingScheduler {
3638

39+
private static final Logger log = LoggerFactory.getLogger(PollingScheduler.class);
3740
@Autowired private DataSourceService dataSourceService;
3841

3942
@Autowired private KafkaProducer kafkaProducer;
@@ -45,10 +48,10 @@ public void pollDataSource() {
4548
String data = dataSourceService.getData(id); // Get data from service
4649

4750
if (data != null) {
48-
System.out.println("🟢 Publishing Data: " + data);
51+
log.info("🟢 Publishing Data: {}", data);
4952
kafkaProducer.sendMessage("updates", data);
5053
} else {
51-
System.out.println("🔴 No Data Found for ID: " + id);
54+
log.info("🔴 No Data Found for ID: {}", id);
5255
}
5356
}
5457
}

polling-publisher/polling-service/src/test/java/com/iluwatar/polling/DataSourceServiceTest.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,15 @@ void testRemoveData() {
6969

7070
@Test
7171
void testGetAllData() {
72+
Map<Integer, String> result = service.getAllData();
73+
74+
int size = result.size();
7275
repository.save(1, "First");
7376
repository.save(2, "Second");
7477

75-
Map<Integer, String> result = service.getAllData();
78+
Map<Integer, String> result1 = service.getAllData();
7679

77-
assertEquals(2, result.size(), "Should return all stored data.");
80+
assertEquals(size + 2, result.size(), "Should return all stored data.");
7881
assertEquals("First", result.get(1), "Value for key 1 should be 'First'.");
7982
assertEquals("Second", result.get(2), "Value for key 2 should be 'Second'.");
8083
}

0 commit comments

Comments
 (0)