私のアプリケーションでは、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 メッセージングでこれらの問題を修正するのに苦労しています。助けてください