Skip to content

Commit b174f95

Browse files
committed
schedule live feed topic refreshes
1 parent ec12dd9 commit b174f95

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

src/main/java/vc/live/LiveFeed.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import java.util.concurrent.atomic.AtomicInteger;
3939
import java.util.function.Function;
4040

41+
import static java.util.concurrent.TimeUnit.HOURS;
4142
import static java.util.concurrent.TimeUnit.MINUTES;
4243
import static org.slf4j.LoggerFactory.getLogger;
4344

@@ -125,6 +126,22 @@ private void topicMessageListener(final InputQueue inputQueue, final String mess
125126
}
126127
}
127128

129+
@Scheduled(initialDelay = 1, fixedRate = 1, timeUnit = HOURS)
130+
private void refreshTopicListeners() {
131+
for (var entry : inputTopics.entrySet()) {
132+
try {
133+
var topicListener = entry.getValue();
134+
topicListener.topic().removeListener(topicListener.id());
135+
String id = topicListener.topic().addListener(String.class, (channel, message) -> topicMessageListener(entry.getKey(), message));
136+
inputTopics.remove(entry.getKey());
137+
inputTopics.put(entry.getKey(), new TopicListener(topicListener.topic(), id));
138+
LOGGER.info("Refreshed {} topic listener {}", entry.getKey().topicName(), id);
139+
} catch (Exception e) {
140+
LOGGER.error("Error refreshing topic listener for {}", entry.getKey().topicName(), e);
141+
}
142+
}
143+
}
144+
128145
private String feedName() {
129146
return getClass().getSimpleName();
130147
}

0 commit comments

Comments
 (0)