Refactoring

This commit is contained in:
dahoud
2026-01-21 19:16:24 +00:00
parent b9fc1ee05a
commit 8cb67f1762
6 changed files with 66 additions and 108 deletions

View File

@@ -9,6 +9,7 @@ import org.eclipse.microprofile.reactive.messaging.Message;
import java.util.UUID;
import java.util.Map;
import java.util.concurrent.CompletionStage;
/**
* Bridge qui consomme depuis Kafka et envoie via WebSocket pour le chat.
@@ -21,9 +22,12 @@ public class ChatKafkaBridge {
/**
* Consomme les messages chat depuis Kafka et les route vers WebSocket.
*
* @param message Message Kafka contenant un ChatMessageEvent
* @return CompletionStage pour gérer l'ack/nack asynchrone
*/
@Incoming("kafka-chat")
public void processChatMessage(Message<ChatMessageEvent> message) {
public CompletionStage<Void> processChatMessage(Message<ChatMessageEvent> message) {
try {
ChatMessageEvent event = message.getPayload();
@@ -38,17 +42,17 @@ public class ChatKafkaBridge {
// Envoyer via WebSocket au destinataire
ChatWebSocketNext.sendMessageToUser(recipientId, wsMessage);
// Acknowledger le message Kafka
message.ack();
Log.debug("[CHAT-BRIDGE] Message routé vers WebSocket pour: " + event.getRecipientId());
// Acknowledger le message Kafka
return message.ack();
} catch (IllegalArgumentException e) {
Log.error("[CHAT-BRIDGE] UUID invalide dans l'événement", e);
message.nack(e);
return message.nack(e);
} catch (Exception e) {
Log.error("[CHAT-BRIDGE] Erreur traitement événement", e);
message.nack(e);
return message.nack(e);
}
}

View File

@@ -8,6 +8,8 @@ import org.eclipse.microprofile.reactive.messaging.Incoming;
import org.eclipse.microprofile.reactive.messaging.Message;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;
/**
* Bridge qui consomme depuis Kafka et envoie via WebSocket pour les notifications.
@@ -27,9 +29,10 @@ public class NotificationKafkaBridge {
* Consomme les événements depuis Kafka et les route vers WebSocket.
*
* @param message Message Kafka contenant un NotificationEvent
* @return CompletionStage pour gérer l'ack/nack asynchrone
*/
@Incoming("kafka-notifications")
public void processNotification(Message<NotificationEvent> message) {
public CompletionStage<Void> processNotification(Message<NotificationEvent> message) {
try {
NotificationEvent event = message.getPayload();
@@ -44,17 +47,17 @@ public class NotificationKafkaBridge {
// Envoyer via WebSocket
NotificationWebSocketNext.sendToUser(userId, wsMessage);
// Acknowledger le message Kafka
message.ack();
Log.debug("[KAFKA-BRIDGE] Notification routée vers WebSocket pour: " + event.getUserId());
// Acknowledger le message Kafka
return message.ack();
} catch (IllegalArgumentException e) {
Log.error("[KAFKA-BRIDGE] UUID invalide dans l'événement", e);
message.nack(e);
return message.nack(e);
} catch (Exception e) {
Log.error("[KAFKA-BRIDGE] Erreur traitement événement", e);
message.nack(e);
return message.nack(e);
}
}

View File

@@ -8,6 +8,7 @@ import org.eclipse.microprofile.reactive.messaging.Incoming;
import org.eclipse.microprofile.reactive.messaging.Message;
import java.util.UUID;
import java.util.concurrent.CompletionStage;
/**
* Bridge qui consomme depuis Kafka et envoie via WebSocket pour les réactions.
@@ -23,9 +24,12 @@ public class ReactionKafkaBridge {
/**
* Consomme les réactions depuis Kafka et les route vers WebSocket.
*
* @param message Message Kafka contenant un ReactionEvent
* @return CompletionStage pour gérer l'ack/nack asynchrone
*/
@Incoming("kafka-reactions")
public void processReaction(Message<ReactionEvent> message) {
public CompletionStage<Void> processReaction(Message<ReactionEvent> message) {
try {
ReactionEvent event = message.getPayload();
@@ -50,14 +54,14 @@ public class ReactionKafkaBridge {
}
// Acknowledger le message Kafka
message.ack();
return message.ack();
} catch (IllegalArgumentException e) {
Log.error("[REACTION-BRIDGE] UUID invalide dans l'événement", e);
message.nack(e);
return message.nack(e);
} catch (Exception e) {
Log.error("[REACTION-BRIDGE] Erreur traitement événement", e);
message.nack(e);
return message.nack(e);
}
}