1

私のアプリケーションでは、redis のパブリッシャーからメッセージを受信するために複数のコンシューマーを使用しています。しかし、問題はデータの損失と重複データです。つまり、複数のコンシューマーが同じメッセージを受信して​​います。redis でこの問題を解決するにはどうすればよいですか? また、Redisメッセージングが初めてのJavaで例を提供することもできます。助けてください。

これが私の受信機です

@Configuration
@EnableScheduling
public class ScheduledRecevierService {

    private static final Logger LOGGER = LoggerFactory.getLogger(Application.class);
    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

    @Bean
    RedisConnectionFactory redisConnectionFactory() {
        LOGGER.info("in redisConnectionFactory");
        JedisConnectionFactory redis = new JedisConnectionFactory();
        redis.setHostName("ipaddress");
        redis.setPort(6379);
        return redis;
    }

    @Bean
    StringRedisTemplate template(RedisConnectionFactory connectionFactory) {
        LOGGER.info("in template");
        return new StringRedisTemplate(connectionFactory);
    } 

    @Scheduled(fixedRate = 1000)
    public void getScheduledMessage() {

        StringRedisTemplate template = template(redisConnectionFactory());
        System.out.println("The time is now " + dateFormat.format(new Date()));
        LOGGER.info("Sending messages...");

        String message = template.opsForList().leftPop("point-to-point-test"); // latch.await();
        // template.convertAndSend("chat", "Hello from Redis! count: " + i);
        LOGGER.info("Got  message " + message + " from chat1 channel"); //
    }

}

このアプリケーションを複数のコンシューマー インスタンスで実行しています。私のキュー「ポイント ツー ポイント テスト」には 1000 個のメッセージがあり、複数のサーバー ログで同じメッセージを読み取っています。

javaを使用してredisでポイントツーポイントプロトコル通信を実装できますか?

redis の RPOPLPUSH コマンドはこの問題を解決しますか? はいの場合は、java にいくつかの例を投稿してください。

数日後、redis メッセージングでこれらの問題を修正するのに苦労しています。助けてください

4

1 に答える 1