UPDATE 02-sept
This commit is contained in:
10
pom.xml
10
pom.xml
@@ -123,6 +123,16 @@
|
||||
<groupId>com.google.cloud</groupId>
|
||||
<artifactId>google-cloud-dlp</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.netty</groupId>
|
||||
<artifactId>netty-codec-http2</artifactId>
|
||||
<version>4.1.124.Final</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.protobuf</groupId>
|
||||
<artifactId>protobuf-java</artifactId>
|
||||
<version>3.25.5</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<plugins>
|
||||
|
||||
@@ -15,13 +15,8 @@ import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.redis.connection.ReactiveRedisConnectionFactory;
|
||||
import org.springframework.data.redis.core.ReactiveRedisTemplate;
|
||||
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
|
||||
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
|
||||
import org.springframework.data.redis.listener.PatternTopic;
|
||||
import org.springframework.data.redis.serializer.RedisSerializationContext;
|
||||
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
||||
import com.example.service.notification.NotificationExpirationListener;
|
||||
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
/**
|
||||
* Spring configuration class for setting up Reactive Redis(Memorystore in GCP)
|
||||
@@ -79,14 +74,4 @@ public ReactiveRedisTemplate<String, NotificationSessionDTO> reactiveNotificatio
|
||||
.build();
|
||||
return new ReactiveRedisTemplate<>(factory, context);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public RedisMessageListenerContainer keyExpirationListenerContainer(
|
||||
@Autowired RedisConnectionFactory connectionFactory,
|
||||
@Autowired NotificationExpirationListener notificationExpirationListener) {
|
||||
RedisMessageListenerContainer listenerContainer = new RedisMessageListenerContainer();
|
||||
listenerContainer.setConnectionFactory(connectionFactory);
|
||||
listenerContainer.addMessageListener(notificationExpirationListener, new PatternTopic("__keyevent@*__:expired"));
|
||||
return listenerContainer;
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
/*
|
||||
* Copyright 2025 Google. This software is provided as-is, without warranty or representation for any use or purpose.
|
||||
* Your use of it is subject to your agreement with Google.
|
||||
*/
|
||||
|
||||
package com.example.service.notification;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.data.redis.connection.Message;
|
||||
import org.springframework.data.redis.connection.MessageListener;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class NotificationExpirationListener implements MessageListener {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(NotificationExpirationListener.class);
|
||||
private final FirestoreNotificationService firestoreNotificationService;
|
||||
private static final String NOTIFICATION_KEY_PREFIX = "notification:";
|
||||
|
||||
public NotificationExpirationListener(FirestoreNotificationService firestoreNotificationService) {
|
||||
this.firestoreNotificationService = firestoreNotificationService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMessage(Message message, byte[] pattern) {
|
||||
String expiredKey = new String(message.getBody());
|
||||
logger.info("Expired key: " + expiredKey);
|
||||
if (expiredKey.startsWith(NOTIFICATION_KEY_PREFIX)) {
|
||||
String sessionId = expiredKey.substring(NOTIFICATION_KEY_PREFIX.length());
|
||||
firestoreNotificationService.updateNotificationStatus(sessionId, "inactive")
|
||||
.doOnSuccess(v -> logger.info("Notification status updated to inactive for session: " + sessionId))
|
||||
.doOnError(e -> logger.error("Error updating notification status for session: " + sessionId, e))
|
||||
.subscribe();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user