Einführung in Rabbitmq:
MQ ist der vollständige Name der Nachrichtenwarteschlange. Message Queue (MQ) ist eine Kommunikationsmethode zwischen Anwendungen und Anwendungen. Anwendungen kommunizieren durch Lesen und Schreiben von Nachrichten (Daten für Anwendungen) ohne dedizierte Verbindung, um sie zu verknüpfen. Die Zustellung der Nachrichten bezieht sich auf die Kommunikation zwischen den Programmen, indem Daten in Nachrichten gesendet werden, und nicht durch direkte Aufrufen voneinander. Direkte Anrufe werden normalerweise in Techniken wie Remote -Prozeduranrufen verwendet. Warteschlange bezieht sich auf die Anwendung, die über eine Warteschlange kommuniziert. Die Verwendung von Warteschlangen beseitigt die Anforderung, dass sowohl die Empfangs- als auch die Senden -Anwendung gleichzeitig ausführen. Unter ihnen sind die ausgereifteren MQ -Produkte IBM WebSphere MQ.
Der Inhalt dieses Abschnitts ist, dass bei der Registrierung eines Benutzers die E -Mail -Adresse zuerst in der Rabbitmq -Warteschlange gespeichert und dann zur erfolgreichen Registrierung an den Benutzer zurückgegeben wird. Anschließend erhält der Empfänger der Nachrichtenwarteschlange die Nachricht aus der Warteschlange und sendet eine E -Mail an den Benutzer.
1. Einführung in Rabbitmq
Wenn Sie zuvor noch nichts über Rabbitmq Bescheid wissen, wird empfohlen, Rabbitmq Quick (Quick Manual) anzusehen.
1. Installation von Rabbitmq auf Mac.
2. Eine kurze Einführung in Rabbitmq.
Produzent: Verantwortlich für das Senden von Nachrichten an den Austausch.
Austausch: Nach bestimmten Richtlinien ist es dafür verantwortlich, Nachrichten in die angegebene Warteschlange zu speichern.
Warteschlange: Verantwortlich für das Speichern von Nachrichten.
Verbraucher: Verantwortlich für das Extrahieren von Nachrichten aus der Warteschlange.
Bindung: Verantwortlich für die Zuordnung von Austausch und Warteschlangen. Austausch und Warteschlange sind viele zu viele Beziehungen.
2. Implementierung von Rabbitmq im Frühjahr
1. Einführen von Abhängigkeitspaketen.
<Depopenty> <gruppe> org.springFramework.amqp </GroupId> <artifactId> Spring-AMQP </artifactId> <version> 1.6.0.Release </Version> </abhängig> <depeopcy> <GroupId> org.spingframework.amqp </GroupId> <artifactid> </artifactid> <version> 1.6.0.Release </Version> </abhängig>
2. Rabbitmq -Konfigurationsdatei.
<? xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://www.springframework.org/scha. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd "> <! Konfigurieren Sie die Verbindungsfabrik. Wenn Sie Host, Port, Benutzername, Passwort, dann nicht konfigurieren, dann localhost: 5672, Gast /Gast-> <!-<Verbindungspflichtiger ID = "ConnectionFactory" />-> <Connection-factory id = "ConnectionFactory" Host = "localhost" port = "5672" username = "everseeker" Passwort "333" /> <!-2. Konfigurieren Sie Warteschlangen, Austausch und Bindung, die sie in Warteschlangen und Austausch miteinander kombinieren-es gibt ein wichtiges Attribut, das standardmäßig für wahr ist und den Datenverlust nach Ausfallzeiten verhindern kann. -> <!-In Listener-Container gibt es Anerkennung Attribut, das standardmäßig automatisch ist, dh der Verbraucher muss nach erfolgreicher Verarbeitung der Nachricht eine Antwort haben. Wenn das Verbraucherprogramm auf eine Ausnahme oder Abstürze trifft, wird die Nachricht wieder in die Warteschlange-> <admin Connection-factory = "ConnectionFactory" /> <Queue ID = "UsereralerTemailQueue" name = "user.Alts.emails" durable = "true" /> <queueT id = "userAntcellphone" user. Richtig-> <!-Es gibt 4 Arten von Standard-AMQP-Austausch: Direkt, Thema, Header, Fanout, wählen Sie nach tatsächlichen Bedürfnissen. -> <!-Direkt: Wenn die Routing-Taste der Nachricht direkt mit der Routing-Taste der Bingding übereinstimmt, wird die Nachricht an die Warteschlange weitergeleitet. -> <!-Thema: Wenn die Routing-Taste der Nachricht mit der Routing-Taste der Bingding übereinstimmt, wird die Nachricht an die Warteschlange weitergeleitet. -> <!-Header: Wenn die Header-Informationen und -Werte in der Meldungsparameter Tabelle mit der Tabelle der Bindung übereinstimmen, wird die Nachricht in die Warteschlange weitergeleitet. -> <!-Fanout: Unabhängig davon, was die Routing-Taste der Nachricht und der Header/den Wert der Parametertabelle sind, wird die Nachricht an die Warteschlange weitergeleitet. -> <Direct-Exchange name = "user.alert.email.exchange" danlable = "true"> <bindungen> <Binding Queue = "user.Alerts.Email"/> <!-Die Standard-Routing-Taste ist der gleiche wie der Name der Queue-Namen-> </bindungen> </direct-exchange> <Direct-exchiername = userert.alt.Anchange> <-Mnungen-Zingen- name = "teufern. queue = "user.alerts.cellphone"/> </bindungen> </direct-exchange> <!-3. Konfigurieren Sie Rabbittemplate, um Nachrichten zu senden. Konfigurieren Sie den Listener-Container und den Hörer, um Nachrichten zu empfangen-> <beans: bean id = "userListener" /> <louser-container connection-factory queues = "UserAnerTcellPhonequeue"/> </Hörer-Container> </Beans: Beans>
Wenn Sie Connection -Factory konfigurieren und das Standardkennwort für Gast-/Gastkonto verwenden, org.springframework.amqp.amqpAuthenticationException: com.rabbitmq.client.AuthenticationFailureException: Access_refused - Login wurde unter Verwendung der Authentifizierungsmechanismus abgelehnt. Details finden Sie in der Broker Logfile. Die Lösung besteht darin, einen neuen Benutzer mit Administratorberechtigungen zu erstellen und den Zugriff auf den virtuellen Host zu ermöglichen.
Die Schritte sind wie folgt:
1. Öffnen Sie http: // localhost: 15672/
2. Admin -> Benutzer, erstellen Sie einen neuen Benutzer, Administratorberechtigungen.
3. Virtuelle Hosts stellen neue Benutzer fest, um Zugriff zu ermöglichen.
3. Der Produzent sendet eine Nachricht an den Austausch.
@Service ("UseralertService") öffentliche Klasse UsererererServiceImpl implementiert UserAntService {privat Rabbittemplate Rabbit; @Autowired Public UseralertServiceImpl (Rabbittemplate Rabbit) {this.rabbit = Rabbit; } public void sendUserererToemail (Benutzerbenutzer) {// convertandSend (String Exchange, String RoutingKey, Objektobjekt), das Objektobjekt in ein Nachrichtenobjekt inkapitulieren und an tauschen Rabbit.ConvertandSend ("user.alert.email.Exchange", "user.alerts.email", usw., usw. }} 4. Konfigurieren Sie Verbraucher, um Nachrichten zu empfangen.
public class useralertHandler {public void handleSererereralToemail (Benutzerbenutzer) {System.out.println (Benutzer);} 3. Senden Sie E -Mails über javax.mail
1. Einführen von Abhängigkeitspaketen.
<Depopenty> <gruppe> javax.mail </Groupid> <artifactId> mail </artifactId> <version> 1.4.7 </Version> </abhängig>
2. Konfigurieren Sie Mailserverinformationen.
@BeanPublic MailSender MailSender (Umwelt env) {JavamailSenderImpl MailSender = new JavamailSenderImpl (); // Wenn es sich um eine normale Mailbox, eine Nicht-SSL-Authentifizierung usw. handelt, z. MailSender.Setport (Integer.ParseInt (env.getProperty ("MailServer.port"))); mailSender.setusername (env.getProperty ("MailServer.username")); mailSender.setPassword (env.getProperty ("MailServer.Password")); MailSender.SetDefaultCoding ("UTF-8"); // Wenn der Mailserver die SSL -Authentifizierung annimmt, fügen Sie die folgenden Konfigurationen hinzu, z. 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 (Requisiten); mailsender zurückgeben;} 3. Senden Sie E -Mail.
@Component ("usermailService") öffentliche Klasse UsMailServiceImPlements UsMailService {private Mailsender MailSender; @Autowired Public UserMailServiceImpl (Mailsender MailSender) {this.mailsender = mailSender; } public void sendSimpleUMail (String to, User User) {SimpleMailMessage Message = new SimpleMailMessage (); message.setfrom ("[email protected]"); message.setto (zu); message.setsubject (user.getUnername () + "Nachrichtenbestätigung"); message.setText (user.toString ()); MailSender.Send (Nachricht); }} 4. Der Verbraucher kann die Senden -E -Mail -Methode anrufen.
1. Referenzen: Frühlingspraktikum (4. Ausgabe).
2. Der vollständige Code befindet sich in GitHub, Adresse: https://github.com/everseeker0307/register.
Das obige ist die Message Queue (RabbitMQ), die eine E -Mail -Funktion von Spring Learning Notes 3 sendet, die Ihnen vorgestellt wurde. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!