@Bean
	public ConsumerFactory<String, NotificationFeedRequestDto> notificationFeedConsumerFactory() {
		Map<String, Object> props = new HashMap<>();
		// Kafka 브로커 주소 설정
		props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
		// Consumer 그룹 ID 설정
		// 같은 그룹의 consumer들은 토픽의 파티션을 분배하여 메시지를 소비
		props.put(ConsumerConfig.GROUP_ID_CONFIG, "notification-consumer");
		// 메시지 키의 역직렬화 설정 (String 타입)
		props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
		// 메시지 값의 역직렬화 설정 (JSON -> KafkaFeedRequestDto)
		props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, JsonDeserializer.class);
		// JSON을 자바 객체로 변환할 때 신뢰할 패키지 설정 ("*"는 모든 패키지 허용)
		props.put(JsonDeserializer.TRUSTED_PACKAGES, "*");
		//props.put(JsonDeserializer.TYPE_MAPPINGS, "lookids.commentread.comment.adaptor.in.kafka.vo.CommentEventVo");

		// Consumer Factory 생성
		// StringDeserializer: 키를 String으로 역직렬화
		// ErrorHandlingDeserializer: 역직렬화 실패 시 에러 처리
		// JsonDeserializer: JSON을 KafkaFeedRequestDto로 변환
		return new DefaultKafkaConsumerFactory<>(props, new StringDeserializer(),
			new ErrorHandlingDeserializer<>(new JsonDeserializer<>(NotificationFeedRequestDto.class, false)));
	}

	@Bean
	public ConcurrentKafkaListenerContainerFactory<String, NotificationFeedRequestDto> notificationFeedEventListenerContainerFactory() {
		// @KafkaListener 어노테이션이 사용할 Factory 설정
		ConcurrentKafkaListenerContainerFactory<String, NotificationFeedRequestDto> factory = new ConcurrentKafkaListenerContainerFactory<>();
		factory.setConsumerFactory(notificationFeedConsumerFactory());
		return factory;
	}
@Document(collection = "notification")
@Getter
@NoArgsConstructor
public class Notification {
	@Id
	private ObjectId id;
	private String senderUuid;
	private List<String> receiverUuidList;
	private String title;
	private String content;
	private String mediaUrl;
	private String feedCode;
	private String roomId;
	private NotificationType type; // 직렬화, 역직렬화? -> Enum으로 변경
	private LocalDateTime createdAt; // 값은 dto에서 추가, 가져올때는 LocalDateTime으로 변환해서 가져오기

	@Builder
	public Notification(
		ObjectId id,
		String senderUuid,
		List<String> receiverUuidList,
		String title,
		String content,
		String mediaUrl,
		String feedCode,
		String roomId,
		NotificationType type,
		LocalDateTime createdAt
	) {
		this.id = id;
		this.senderUuid = senderUuid;
		this.receiverUuidList =receiverUuidList;
		this.title = title;
		this.content = content;
		this.mediaUrl = mediaUrl;
		this.feedCode = feedCode;
		this.roomId = roomId;
		this.type = type;
		this.createdAt = createdAt;
	}
}
@Getter
@NoArgsConstructor
public class NotificationFollowRequestDto {
	private String senderUuid;
	private String receiverUuid;
	private String type;

	@Builder
	public NotificationFollowRequestDto(
		String senderUuid,
		String receiverUuid,
		String type
	) {
		this.senderUuid = senderUuid;
		this.receiverUuid = receiverUuid;
		this.type = type;
	}
}
Getter
@NoArgsConstructor
public class NotificationFeedRequestDto {
	private String senderUuid;
	private List<String> receiverUuidList;
	private String content;
	private String mediaUrl;
	private String feedCode;
	private String type;

	@Builder
	public NotificationFeedRequestDto(
		String senderUuid,
		List<String> receiverUuidList,
		String content,
		String mediaUrl,
		String feedCode,
		String type
	) {
		this.senderUuid = senderUuid;
		this.receiverUuidList = receiverUuidList;
		this.content = content;
		this.mediaUrl = mediaUrl;
		this.feedCode = feedCode;
		this.type = type;
	}
@Getter
@NoArgsConstructor
public class NotificationFavoriteRequestDto {
	private String senderUuid;
	private String receiverUuid;
	private String feedCode;
	private String type;

	@Builder
	public NotificationFavoriteRequestDto(
		String senderUuid,
		String receiverUuid,
		String feedCode,
		String type
	) {
		this.senderUuid = senderUuid;
		this.receiverUuid = receiverUuid;
		this.feedCode = feedCode;
		this.type = type;
	}
}
@Getter
@NoArgsConstructor
public class NotificationCommentRequestDto {
	private String senderUuid;
	private String receiverUuid;
	private String content;
	private String feedCode;
	private String type;

	@Builder
	public NotificationCommentRequestDto(
		String senderUuid,
		String receiverUuid,
		String content,
		String feedCode,
		String type
	) {
		this.senderUuid = senderUuid;
		this.receiverUuid = receiverUuid;
		this.content = content;
		this.feedCode = feedCode;
		this.type = type;
	}
}

@Getter
@NoArgsConstructor
public class NotificationChattingRequestDto {
	private String senderUuid;
	private List<String> receiverUuidList;
	private String roomId;
	private String content;
	private String mediaUrl; // url 정보 대부분 지우고 마지막의 몇 글자 정보만 받음
	private String type;

	@Builder
	public NotificationChattingRequestDto(
		String senderUuid,
		List<String> receiverUuidList,
		String roomId,
		String content,
		String mediaUrl,
		String type
	) {
		this.senderUuid = senderUuid;
		this.receiverUuidList = receiverUuidList;
		this.roomId = roomId;
		this.content = content;
		this.mediaUrl = mediaUrl;
		this.type = type;
	}
}