Введение в Rabbitmq:
MQ - полное имя очереди сообщений. Очередь сообщений (MQ) - это метод связи между приложениями и приложениями. Приложения общаются, читая и написав в очереди сообщения (данные для приложений) без выделенного соединения для их связи. Доставка сообщений относится к общению между программами путем отправки данных в сообщениях, а не при непосредственных вызовах друг друга, прямые вызовы обычно используются в таких методах, как вызовы удаленных процедур. Очередь относится к заявлению, общающемуся через очередь. Использование очередей устраняет требование о том, что как получение и отправка приложения выполняется одновременно. Среди них более зрелые продукты MQ являются IBM WebSphere MQ.
Содержание этого раздела заключается в том, что когда пользователь регистрируется, адрес электронной почты сначала хранится в очереди RabbitMQ, а затем возвращается пользователю для успешной регистрации; Затем получатель очереди сообщения получает сообщение из очереди и отправляет электронное письмо пользователю.
1. Введение в Rabbitmq
Если вы раньше не знаете о Rabbitmq, рекомендуется взглянуть на Rabbitmq быстро (быстрое руководство).
1. Установка Rabbitmq на Mac.
2. Краткое введение в Rabbitmq.
Производитель: Отвечает за отправку сообщений на обмен.
Обмен: Согласно определенным политикам, он отвечает за хранение сообщений в указанной очереди.
Очередь: Отвечает за сохранение сообщений.
Потребитель: Отвечает за извлечение сообщений из очереди.
Переплет: Отвечает за картирование ассоциации обмена и очередей. Обмен и очередь-это отношения от многих ко многим.
2. Реализация Rabbitmq весной
1. Введите пакеты зависимостей.
<depervice> <groupid> org.springframework.amqp </groupid> <artifactid> spring-amqp </artifactid> <sersive> 1.6.0.release </version> </redice> <dependency> <groupid> org.springframework.amqp </artifactid> spring-rabbitid> <версия> 1.6.0.release </version> </vehyederian>
2. Файл конфигурации RabbitMQ.
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans: Beans xmlns = "http://www.springframework.org/schema/rabbit" xmlns: beans = "http://www.spramework.orgembema". xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd "> <!-1. Настройте завод по соединению. Если вы не настраиваете хост, порт, имя пользователя, пароль, тогда Localhost: 5672, гость /гость-> <!-<connection-factory id = "connectionFactory" />-> <connection-factory id = "ConnectionFactory" host = "localhost" port = "5672" username = "everseeker" paswr = "333" /> <!-2. Настройка очередей очередей, обмен и привязкой, которые объединяют их вместе-> <!-В очереди и обмене существует важный атрибут долговечного, который по умолчанию по истине, который может предотвратить потерю данных после простоя. -> <!-В прослушивателе-контентере есть атрибут подтверждения, который не выполняется по умолчанию Auto, то есть потребитель должен иметь ответ после успешной обработки сообщения. Если потребительская программа сталкивается с исключением или сбоями, сообщение будет повторно выставлено обратно в очередь-> <admin connection-factory = "connectionfactory" /> <queue id = "useraltemailqueue" name = "user.alerts.email" dayult = "true" /> <Queue Id = "useraltcellphonequekee. True-> <!-Есть 4 типа стандартной обмены AMQP: Direct, тема, заголовки, фанату, выбирайте в соответствии с фактическими потребностями. -> <!-Direct: Если ключ маршрутизации сообщения напрямую соответствует ключке маршрутизации Bingding, сообщение будет направлено в очередь. -> <!-Тема: Если ключ маршрутизации сообщения соответствует ключке маршрутизации Bingding, сообщение будет направлено в очередь. -> <!-Заголовки: Если информация и значения заголовка в таблице параметров сообщения соответствует таблице параметров привязки, сообщение будет направлено в очередь. -> <!-Fanout: Независимо от того, какова клавиша маршрутизации сообщения и заголовок/значение таблицы параметров, сообщение будет направлено в очередь. -> <прямое обменение name = "user.alert.email.exchange" ourumber = "true"> <brindings> <Привязки queue = "user.alerts.email"/> <!-Ключ маршрутизации по умолчанию такой же, как и имя очередь-> </indings> </direct- Exchange> <Direct-ExeChange name. queue = "user.alerts.cellphone"/> </bindings> </direct-exchange> <!-3. Настройте RabbitTemplate для отправки сообщений-> <Template id = "rabbittemplate" connection-factory = "connectionFactory" /> <!-4. Configure the listener container and listener to receive messages--> <beans:bean id="userListener" /> <listener-container connection-factory="connectionFactory" acknowledge="auto"> <listener ref="userListener" method="handleUserAlertToEmail" queues="userAlertEmailQueue" /> <listener ref="userListener" method="handleUserAlertToCellphone" queues = "useralertcellphonequeue"/> </слушатель-container> </beans: бобы>
Если вы настраиваете Factory Connection -Factory и используете пароль учетной записи гостей по умолчанию, org.springframework.amqp.amqpauthenticationException: com.rabbitmq.client.authenticationFailureException: access_refused - войти в систему было отказано с использованием механизма аутентификации. Подробности см. В логариффиле брокера. Решение состоит в том, чтобы создать нового пользователя с привилегиями администратора и разрешить доступ к виртуальному хосту.
Шаги следующие:
1. Откройте http: // localhost: 15672/
2. Admin -> Пользователи, создайте нового пользователя, разрешения администратора.
3. Виртуальные хосты, установите новых пользователей, чтобы разрешить доступ.
3. Производитель отправляет сообщение на обмен.
@Service ("useralertservice") открытый класс UseralerTserviceImpl реализует useralertservice {private rabbittemplate rabbit; @Autowired public useralertserviceimpl (кролик кролик) {this.rabbit = rabbit; } public void sendUseralerttoemail (пользователь пользователя) {// convertandsend (string exchange, string routingkey, объект объекта), инкапсулирует объект объекта в объект сообщения и отправьте его на обмен rabbit.convertandsend ("user.alert.email.exchange", "user.alerts.email", user); }} 4. Настройте потребителей для получения сообщений.
открытый класс UseralerThandler {public void handleUseralerttoemail (пользователь пользователя) {System.out.println (пользователь);} 3. Отправить электронные письма через javax.mail
1. Введите пакеты зависимостей.
<Depective> <groupid> javax.mail </GroupId> <artifactId> mail </artifactid> <serse> 1.4.7 </version> </vehyse>
2. Настройте информацию о почтовом сервере.
@Beanpublic mailsender mailsender (Environment env) {javamailsenderimpl mailsender = new javamailsenderimpl (); // Если это обычный почтовый ящик, не-SSL аутентификация и т. Д., Такую, как 163 Mailbox mailsender.sethost (env.getProperty ("mailserver.host")); mailsender.setport (integer.parseint (env.getProperty ("mailserver.port"))); mailsender.setusername (env.getProperty ("mailserver.username")); mailsender.setpassword (env.getProperty ("mailserver.password")); mailsender.setDefaultEncoding ("UTF-8"); // Если почтовый сервер принимает аутентификацию SSL, добавьте следующие конфигурации, такие как почтовый ящик Gmail, QQ Mailbox Properties props = new Properties (); props.put ("mail.smtp.auth", "true"); props.put ("mail.smtp.starttls.enable", "true"); props.put ("mail.smtp.socketfactory.class", "javax.net.ssl.sslsocketFactory"); props.put ("mail.smtp.socketfactory.port", "465"); mailsender.setjavamailproperties (реквизит); return mailsender;} 3. Отправить электронную почту.
@Component ("usermailservice") открытый класс UsermailServiceImpl реализует usermailService {Private Mailsender Mailsender; @Autowired public usermailServiceimpl (mailsender mailsender) {this.mailsender = mailsender; } public void SendSimpleUserMail (String To, пользователь пользователь) {SommereMailMessage Message = new SommereMailMessage (); message.setfrom ("[email protected]"); message.setto (to); message.setsubject (user.getusername () + "Подтверждение сообщения"); message.settext (user.tostring ()); mailsender.send (сообщение); }} 4. Потребитель может позвонить в метод отправки электронной почты.
1. Ссылки: Практическая практика весна (4 -е издание).
2. Полный код в GitHub, адрес: https://github.com/everseeker0307/register.
Выше приведено в очереди сообщения (RabbitMQ), отправляющая функцию электронной почты из Spring Learning Notes 3, представленные вам. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!