#java #spring-boot #email #jakarta-mail #email-client
Вопрос:
Я создаю микросервис почтового клиента с помощью java mail. После этого мне нужно получить уведомление по электронной почте. Например: Если приходит новое электронное письмо, серверная часть должна отправить уведомление по электронной почте на внешний интерфейс.
для push-уведомления я использую push-уведомление firebase.
Он отлично работает, но мой вопрос в том, повлияет ли это на производительность системы. потому что, когда пользователь войдет в систему, интерфейс установит соединение с websocket. после этого интерфейс будет отправлять запрос websocket каждые 5 минут на серверную часть. после этого серверная часть подключается к веб-почте и получает количество новых писем. и серверная часть вернет новое количество сообщений электронной почты на интерфейс.
повлияет ли этот метод на производительность сервера, когда речь зайдет о 500 пользователях. Это функция для сбора количества сообщений электронной почты.
public int notification(String email, String password) throws MessagingException { InboxMail mail = inboxmaildao.findFirstByEmailOrderByTimestampDesc(email); long lastTimestamp = mail.getTimestamp(); Store store = config.emailConfiguration(email, password); int notification = 0; SearchTerm olderThan = new ReceivedDateTerm(ComparisonTerm.LT, new Date(new Date().getTime() nextDay)); SearchTerm newerThan = new ReceivedDateTerm(ComparisonTerm.GT, new Date(lastTimestamp - nextDay)); SearchTerm andTerm = new AndTerm(olderThan, newerThan); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_ONLY); Message[] arrayMessages = folder.search(andTerm); if (arrayMessages != null) { for (Message message : arrayMessages) { long timestamp = message.getReceivedDate().getTime(); if (lastTimestamp lt; timestamp) { notification ; } } } store.close(); return notification; } }
И веб-карман
@MessageMapping("/notification") @SendTo("/email/notification") public NotificationDto message(NotificationDto message) throws Exception { Thread.sleep(1000); // simulated delay int notification = notificationService.notification(message.getEmail(), message.getPassword()); System.out.println(notification); return message; }
Также есть ли какой-либо другой способ собрать уведомление по электронной почте из веб-почты/gmail/outlook?
Комментарии:
1. Почему бы не попробовать короткий опрос для чего-то подобного? Я предполагаю, что несколько минут здесь и там не влияют на пользовательский интерфейс. Таким образом, вы сократите количество одновременных подключений, которые ваш сервер должен поддерживать