Skip to content

fitiz/cs-redis-consumer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Challenge service Kafka consumer for Redis

  • Kafka consumer for updating the leaderboard sorted set in Redis
  • Publishes "leaderboard-change" topic indicating which leaderboard changed at which timestamp
@KafkaListener(
            topics = {"${prop.config.broker-properties.step-count-topic}"},
            groupId = "${prop.config.broker-properties.step-count-topic-redis-consumer-group-id}",
            properties = {"spring.json.value.default.type=com.fitiz.csredisconsumer.model.StepCountUpdateData"}
    )
    public void stepCountRedisConsumer(ConsumerRecord<String, StepCountUpdateData> record) {
        var stepCountUpdateData = record.value();
        var steps = stepCountUpdateData.steps();
        var leaderboardCollectionKey = LEADERBOARD_KEY_PREFIX + stepCountUpdateData.challengeId();

        log.info("Step count consumed, [user: {}, step count: {}]", stepCountUpdateData.username(), steps);
        leaderboardRedisRepository.updateSteps(leaderboardCollectionKey, steps, stepCountUpdateData.username());
        log.info("Step count added to redis leaderboard...");

        long changeTimestampMs = getTimestampMs(stepCountUpdateData.createdAt());
        kafkaLeaderboardChangeTemplate.send(LEADERBOARD_CHANGE_TOPIC,
                new LeaderboardChangeTime(changeTimestampMs));
        log.info("Leaderboard change timestamp {} published to Kafka...", changeTimestampMs);
    }

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published