diff --git a/src/main/java/dev/mednikov/social/users/messaging/AnalyticsEvent.java b/src/main/java/dev/mednikov/social/users/messaging/AnalyticsEvent.java new file mode 100644 index 0000000..e48937d --- /dev/null +++ b/src/main/java/dev/mednikov/social/users/messaging/AnalyticsEvent.java @@ -0,0 +1,42 @@ +package dev.mednikov.social.users.messaging; + +import java.time.LocalDateTime; + +final class AnalyticsEvent { + + private String userId; + private String eventType; + private String timestamp; + + AnalyticsEvent (){} + + AnalyticsEvent(Long userId, String eventType){ + this.userId = userId.toString(); + this.eventType = eventType; + this.timestamp = LocalDateTime.now().toString(); + } + + String getUserId() { + return userId; + } + + void setUserId(String userId) { + this.userId = userId; + } + + String getEventType() { + return eventType; + } + + void setEventType(String eventType) { + this.eventType = eventType; + } + + String getTimestamp() { + return timestamp; + } + + void setTimestamp(String timestamp) { + this.timestamp = timestamp; + } +} diff --git a/src/main/java/dev/mednikov/social/users/messaging/MessageService.java b/src/main/java/dev/mednikov/social/users/messaging/MessageService.java index 4e6742c..3813eac 100644 --- a/src/main/java/dev/mednikov/social/users/messaging/MessageService.java +++ b/src/main/java/dev/mednikov/social/users/messaging/MessageService.java @@ -3,6 +3,7 @@ package dev.mednikov.social.users.messaging; import com.fasterxml.jackson.databind.ObjectMapper; import dev.mednikov.social.users.events.UserCreatedEvent; import dev.mednikov.social.users.events.UserUpdatedEvent; +import dev.mednikov.social.users.models.User; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; @@ -26,10 +27,16 @@ public class MessageService { @EventListener @Async public void onUserCreatedEventListener (UserCreatedEvent event) { - UserPayload payload = new UserPayload(event.getUser()); + User user = event.getUser(); + Long userId = user.getId(); + UserPayload payload = new UserPayload(user); + AnalyticsEvent analyticsEvent = new AnalyticsEvent(userId, "users_created"); try { String userEncoded = this.objectMapper.writeValueAsString(payload); + String eventEncoded = this.objectMapper.writeValueAsString(analyticsEvent); this.rabbitTemplate.convertAndSend("", "social_users_created", userEncoded); + this.rabbitTemplate.convertAndSend("", "social_events", eventEncoded); + logger.info("RabbitMQ: User created event sent"); } catch (Exception ex){ logger.error(ex.getMessage()); } @@ -39,9 +46,14 @@ public class MessageService { @Async public void onUserUpdatedEventListener (UserUpdatedEvent event) { UserPayload payload = new UserPayload(event.getUser()); + Long userId = event.getUser().getId(); + AnalyticsEvent analyticsEvent = new AnalyticsEvent(userId, "users_updated"); try { String userEncoded = this.objectMapper.writeValueAsString(payload); + String eventEncoded = this.objectMapper.writeValueAsString(analyticsEvent); this.rabbitTemplate.convertAndSend("", "social_users_updated", userEncoded); + this.rabbitTemplate.convertAndSend("", "social_events", eventEncoded); + logger.info("RabbitMQ: user updated event sent"); } catch (Exception ex){ logger.error(ex.getMessage()); }