Introducción al conejo:
MQ es el nombre completo de la cola de mensajes. Message Queue (MQ) es un método de comunicación entre aplicaciones y aplicaciones. Las aplicaciones se comunican leyendo y escribiendo mensajes en cola (datos para aplicaciones) sin una conexión dedicada para vincularlos. La entrega de mensajes se refiere a la comunicación entre programas enviando datos en mensajes, en lugar de llamarse directamente entre sí, las llamadas directas generalmente se usan en técnicas como llamadas de procedimientos remotos. La cola se refiere a la solicitud que se comunica a través de una cola. El uso de colas elimina el requisito de que tanto la aplicación de recepción como el envío se ejecuten simultáneamente. Entre ellos, los productos MQ más maduros son IBM WebSphere MQ.
El contenido de esta sección es que cuando un usuario se registra, la dirección de correo electrónico se almacena primero en la cola RabbitMQ y luego se devuelve al usuario para un registro exitoso; Luego, el receptor de la cola de mensajes obtiene el mensaje de la cola y envía un correo electrónico al usuario.
1. Introducción al conejo
Si no sabe sobre RabbitMQ antes, se recomienda echar un vistazo a RabbitMQ rápido (manual rápido).
1. Instalación de RabbitMQ en Mac.
2. Una breve introducción al conejo.
Productor: responsable de enviar mensajes a intercambio.
Intercambio: de acuerdo con ciertas políticas, es responsable de almacenar mensajes en la cola especificada.
Cola: responsable de guardar mensajes.
Consumidor: responsable de extraer mensajes de la cola.
ANIFICACIÓN: Responsable de la asignación de asociación de intercambio y colas. El intercambio y la cola son relaciones de muchos a muchos.
2. Implementación de RabbitMQ en primavera
1. Introducir paquetes de dependencia.
<Spendency> <MoupRoD> org.springframework.amqp </groupid> <artifactid> spring-amqp </arfactid> <verserse> 1.6.0.release </verversion> </dependency> <pendency> <proupid> org.springframe.amqp </groupid> <artifactid> spring-rabbit </artifactid> <Versión> 1.6.0.Release </Version> </Dependency>
2. Archivo de configuración de RabbitMQ.
<? xml versión = "1.0" encoding = "utf-8"?> <frijoles: beans xmlns = "http://www.springframework.org/schema/rabbit" xmlns: beans = "http://www.springframework.org/schema/Beans" " xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/ema/ema/ema/sprabit http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans http://www.springframework.org/schema/Beans/spring-Beans.xsd "> <!-1. Configurar la fábrica de conexión. Si no configura el host, el puerto, el nombre de usuario, la contraseña, entonces localhost: 5672, invitado /invitado-> <!-<conexión-Factory id = "ConnectionFactory" />-> <Connection-Factory id = "ConnectionFactory" host = "localhost" puerto = "5672" UserNerN de = "Everseeker" contraseña = "333" /> <!-2.-2. Configure las colas de colas, el intercambio y la vinculación que las combina juntas-> <!-En cola e intercambio, hay un atributo importante duradero, que de valor predeterminado es verdadero, que puede evitar la pérdida de datos después del tiempo de inactividad. -> <!-En el contenedor del oyente, hay atributo de reconocimiento, que está predeterminado a Auto, es decir, el consumidor debe tener una respuesta después de procesar con éxito el mensaje. Si el programa del consumidor encuentra una excepción o se bloquea, el mensaje se volverá a clasificar a la cola-> <admin conecte-factory = "ConnectionFactory" /> <queue id = "useralerTeMailqueue" name = "user.alerts.email" durable = "true" /> <queue id = " < -> <!-Directo: si la clave de enrutamiento del mensaje coincide directamente con la clave de enrutamiento del bingding, el mensaje se enrutará a la cola. -> <!-Tema: si la clave de enrutamiento del mensaje coincide con la clave de enrutamiento del bingding, el mensaje se enrutará a la cola. -> <!-encabezados: si la información y los valores del encabezado en la tabla de parámetros del mensaje coinciden con la tabla de parámetros de enlace, el mensaje se enrutará a la cola. -> <!-Fanot: no importa cuál sea la clave de enrutamiento del mensaje y el encabezado/valor de la tabla de parámetros, el mensaje se enrutará a la cola. -> <Direct-Exchange name = "user.alert.email.exchange" duradera = "true"> <bindings> <binding queue = "user.alerts.email"/> <! Queue = "user.alerts.cellphone"/> </ bindings> </direct-exchange> <!-3. Configurar rabbittemplate para enviar mensajes-> <Template id = "rabbittemplate" Connection-factory = "ConnectionFactory" /> <!-4. Configure el contenedor y el oyente del oyente para recibir mensajes-> <beans: bean id = "userListener" /> <oyecher-container Connection-Factory = "ConnectionFactory" reconocer = "Auto"> <Listener ref = "userListener" método = "Método de" Método de UserUalToMail "Queues =" Queues = "UserererTcellPhonequeue"/> </oyente-container> </frijoles: frijoles>
Si configura la de fama de conexión y usa la contraseña de cuenta de invitado/invitado predeterminada, org.springframework.amqp.amqpauthenticationException: com.rabbitmq.client.authenticationFailureException: access_refused - El inicio de sesión se rechazó utilizando el mecanismo de autenticación simple. Para más detalles, consulte el archivo de registro del corredor. La solución es crear un nuevo usuario con privilegios de administrador y permitir el acceso al host virtual.
Los pasos son los siguientes:
1. Abra http: // localhost: 15672/
2. Admin -> Usuarios, cree un nuevo usuario, permisos de administrador.
3. Hosts virtuales, configure nuevos usuarios para permitir el acceso.
3. El productor envía un mensaje para intercambiar.
@Service ("UsererTservice") clase pública UsereralertServiceImpl implementa UsereralTservice {Rabbitsplate Rabbit privado; @AUtowired público usererertServiceImpl (Rabbittemplate Rabbit) {this.rabbit = conejo; } public void sendUseralertToEmail (usuario de usuario) {// ConvertandSend (String Exchange, String RoutingKey, Object Object), encapsule el objeto Objeto en un objeto de mensaje y lo envíe a Exchange rabbit.convertandsend ("user.alert.email.exchange", "user.alerts.email", usuario); }} 4. Configure los consumidores para recibir mensajes.
Public Class UserererThandler {public void handleUsalToMail (usuario de usuario) {System.out.println (usuario);} 3. Envíe correos electrónicos a través de Javax.Mail
1. Introducir paquetes de dependencia.
<Spendency> <MoupRoMID> javax.mail </groupid> <artifactid> mail </artifactid> <versión> 1.4.7 </versión> </dependencia>
2. Configure la información del servidor de correo.
@BeanPublic Mailsender Mailsender (Environment Env) {javamailsenderImpl mailsender = new JavamailsenderImpl (); // Si se trata de un buzón normal, autenticación que no es SSL, etc., como 163 boxbox 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"); // Si el servidor de correo adopta la autenticación SSL, agregue las siguientes configuraciones, como el buzón Gmail, QQ Bailbox Properties props = new Properties (); propssput ("mail.smtp.auth", "verdadero"); 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 (accesorios); devolver Mailsender;} 3. Enviar correo electrónico.
@Component ("UsermailService") Clase pública USERMAILServiceImpl implementa USERMAILService {Private MailSender MailSender; @AUTOWIRED Public UsermailServiceImpl (Mailsender Mailsender) {this.mailsender = mailsender; } public void sendSimpleUsermail (cadena a usuario de usuario) {simplEmailMessage Message = new SimpleMailMessage (); Message.setFrom ("[email protected]"); Message.setto (a); Message.setsubject (user.getUsername () + "Confirmación de mensajes"); Message.settext (user.toString ()); Mailsender.send (mensaje); }} 4. El consumidor puede llamar al método de correo electrónico de envío.
1. Referencias: Práctica de primavera (4ª edición).
2. El código completo está en GitHub, dirección: https://github.com/everseeker0307/register.
Lo anterior es la cola de mensajes (rabbitmq) que envía la función de correo electrónico de Spring Learning Notes 3 presentada a usted. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!