NotificationService.java
package com.edtech.service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Service;
/** Javadoc. */
@Service
public class NotificationService {
private static final Logger logger = LoggerFactory.getLogger(NotificationService.class);
private final SimpMessagingTemplate messagingTemplate;
public NotificationService(
@org.springframework.beans.factory.annotation.Autowired(required = false)
SimpMessagingTemplate messagingTemplate) {
this.messagingTemplate = messagingTemplate;
}
/**
* Envia uma notificação em tempo real (WebSocket) para um usuário específico.
*
* @param userId O ID do usuário (como String)
* @param payload O conteúdo da mensagem
*/
public void sendToUser(String userId, Object payload) {
if (messagingTemplate == null) {
return;
}
String destination = "/queue/notifications";
logger.info("Enviando notificacao WS para o usuario {}: {}", userId, payload);
messagingTemplate.convertAndSendToUser(userId, destination, payload);
}
/**
* Envia uma notificação para um tópico geral.
*
* @param topic O tópico de destino (ex: /topic/global)
* @param payload O conteúdo da mensagem
*/
public void sendToTopic(String topic, Object payload) {
if (messagingTemplate == null) {
return;
}
logger.info("Enviando notificacao WS global para o topico {}: {}", topic, payload);
messagingTemplate.convertAndSend(topic, payload);
}
}