Код электронной почты замедляет код в Java Spring MVC - PullRequest
0 голосов
/ 13 марта 2011

Я добавил, что это мой контроллер

@RequestMapping(value = "/persons/add", method = RequestMethod.POST)
        public String add(@Valid @ModelAttribute("personAttribute") Person person,
                BindingResult result) {
        logger.debug("Received request to add new person");


        SimpleMailMessage mailMessage = new SimpleMailMessage();

        mailMessage.setTo("someone@abc.com");
        mailMessage.setSubject("This is the test message for testing gmail smtp server using spring mail");
        mailMessage.setFrom("abc@gmail.com");
        mailMessage.setText("This is the test message for testing gmail smtp server using spring mail. \n" +
                "Thanks \n Regards \n Saurabh ");
        mailSender.send(mailMessage);


        if (result.hasErrors())
                return "hibernate/addpage";
        else
        personService.add(person);

                return "hibernate/addedpage";
    }

Теперь, после нажатия кнопки добавления, требуется 5-6 секунд.

Ответы [ 4 ]

2 голосов
/ 13 марта 2011

Как сказал Дэвид, используйте асинхронный API. Я не рекомендую создавать новую тему. Создание потока для каждого запроса может потенциально означать, что создается много потоков для обслуживания параллельных запросов. Лучше использовать исполнителя пула потоков с ограниченным размером пула и ставить в очередь задания, которые выполняют отправку почты. Google Java исполнители и как использовать их в течение весны; Существуют различные реализации. Это означает, что ваши запросы не блокируются, и они будут выполняться так же быстро, как если бы вы вообще не отправляли почту (в значительной степени).

В качестве альтернативы используйте локальный почтовый сервер - отправка через почтовый сервер, работающий на локальном хосте, выполняется намного быстрее, но я бы рекомендовал асинхронный подход. Однако при переходе по асинхронному маршруту необходимо учитывать некоторые особенности, например, как обрабатывать ошибки отправки почты. Крайне важно, чтобы ваш поток выполнения отличался в состоянии ошибки или вы можете спокойно его игнорировать?

1 голос
/ 13 марта 2011

Этого, вероятно, следовало ожидать.Отправка почтового сообщения на почтовый сервер не происходит мгновенно.

Если это проблема;используйте асинхронный API для отправки сообщения (или запустите поток, чтобы сделать это).

1 голос
/ 13 марта 2011

это вопрос?

вы отправляете почту синхронно - это может занять несколько секунд.В чем проблема?

Я думаю, также вероятно, что Gmail работает ....

0 голосов
/ 01 января 2013

Лучше использовать почтовый сервис Async.

Spring TaskExecutor для Mail

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...