RabbitMQ 소개 :
MQ는 메시지 대기열의 전체 이름입니다. 메시지 큐 (MQ)는 응용 프로그램과 응용 프로그램 간의 통신 방법입니다. 애플리케이션은 전용 연결없이 대기열 메시지 (응용 프로그램의 데이터)를 읽고 작성하여 통신합니다. 메시지 전달은 메시지로 데이터를 보내는 프로그램 간의 커뮤니케이션을 말하며, 서로 직접 전화하는 대신 직접 통화는 일반적으로 원격 프로 시저 통화와 같은 기술에 사용됩니다. 대기열은 큐를 통해 통신하는 응용 프로그램을 나타냅니다. 대기열을 사용하면 수신 및 전송 애플리케이션이 동시에 실행 해야하는 요구 사항이 제거됩니다. 그중에서도 더 성숙한 MQ 제품은 IBM WebSphere MQ입니다.
이 섹션의 내용은 사용자가 등록 할 때 이메일 주소가 먼저 RabbitMQ 대기열에 저장된 다음 성공적인 등록을 위해 사용자에게 반환한다는 것입니다. 그런 다음 메시지 큐의 수신기는 큐에서 메시지를 얻고 이메일을 사용자에게 보냅니다.
1. Rabbitmq 소개
전에 RabbitMQ에 대해 모른다면 Rabbitmq Quick (빠른 매뉴얼)을 살펴 보는 것이 좋습니다.
1. Mac에 RabbitMQ 설치.
2. Rabbitmq에 대한 간단한 소개.
프로듀서 : 교환에 메시지를 보내는 책임.
Exchange : 특정 정책에 따르면 메시지를 지정된 대기열에 저장할 책임이 있습니다.
대기열 : 메시지 저장을 담당합니다.
소비자 : 대기열에서 메시지 추출을 담당합니다.
바인딩 : 교환 및 대기열의 협회 매핑을 담당합니다. 교환 및 대기열은 다수의 관계입니다.
2. 봄에 RabbitMQ의 구현
1. 종속성 패키지를 소개합니다.
<pectionency> <groupid> org.springframework.amqp </groupid> <artifactid> spring-amqp </artifactid> <bersion> 1.6.0. release </version> </dependency> <groupid> org.spramework.amqp </groupid> <artifactid> spring-rabbit </artifactid> <버전> 1.6.0. Release </version> </fectionency>
2. RabbitMQ 구성 파일.
<? xml version = "1.0"alcoding = "utf-8"?> <beans : beans xmlns = "http://www.springframework.org/schema/rabbit"xmlns : bean = "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.orgr/schema/schembbit/schembit/schbit/schbit/schbit/schbit http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">-1. 연결 공장을 구성하십시오. 호스트, 포트, 사용자 이름, 비밀번호, 비밀번호를 구성하지 않으면 LocalHost : 5672, Guest /Guest-> <!-<ConnectionFactory id = "ConnectionFactory" />-> <Connection-Factory id = "ConnectionFactory"host = "LocalHost"포트 = "5672"userName = "EverSeeKer"Password = "333" /> <!-2. 큐를 결합한 큐 큐, 교환 및 바인딩을 구성합니다-> <!-큐와 교환에는 내구성이 내구성이 내구되어 기본적으로 타임 타임 후 데이터 손실을 방지 할 수 있습니다. -> <!-리스너-함유자에는 Accounteed Attribute가 있습니다.이 속성은 자동으로 기본적으로 표시됩니다. 즉, 소비자는 메시지를 성공적으로 처리 한 후에 답장을 가져야합니다. 소비자 프로그램에 예외가 발생하거나 충돌이 발생하면 메시지가 큐로 돌아갑니다-> <admin connection-factory = "ConnectionFactory" /> <queue id = "useralerTeMailqueue"name = "user.alerts.email"Durable = "true" /> <queeue id = "aseralertCellponequeue"name = "user. 기본적으로 true-> <!-4 가지 유형의 표준 AMQP 교환이 있습니다 : Direct, Topic, Headers, Fanout, 실제 요구에 따라 선택하십시오. -> <!-Direct : 메시지의 라우팅 키가 빙딩의 라우팅 키와 직접 일치하면 메시지가 대기열로 라우팅됩니다. -> <!-주제 : 메시지의 라우팅 키가 Bingding의 라우팅 키와 일치하면 메시지가 큐로 라우팅됩니다. -> <!-헤더 : 메시지 매개 변수 테이블의 헤더 정보와 값이 바인딩 매개 변수 테이블과 일치하면 메시지가 큐로 라우팅됩니다. -> <!-fanout : 메시지의 라우팅 키와 매개 변수 테이블의 헤더/값이 무엇이든 메시지가 큐로 라우팅됩니다. -> <direct-exchange name = "user.alert.email.exchange"durable = "true"> <binding> <binding queue = "user.alerts.email"/> <!-기본 라우팅 키는 큐의 이름과 동일합니다-> </direct-exchange> <Direct-exchange name = <userTone.cell prone.cell phone. queue = "user.alerts.cellphone"/> </bindings> </direct-exchange> <!-3. RabbitTemplate를 메시지 보내도록 구성-> <template id = "RabbitTemplate"Connection-Factory = "ConnectionFactory" /> <!-4. 리스너 컨테이너 및 리스너를 수신하도록 구성합니다-> <beans : bean id = "userListener" /> <Listener-Container Connection-Factory = "ConnectionFactory"alkwordge = "auto"> <Listener ref = "userListener"메소드 = "handsUseralerTtoemail"queues = "useralertemailqueue" 대기열 = "USERALERTCELLPHONEQUEUE"/> </LEARTER-CONTAINER> </beans : Beans>
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 (Rabbittemplate Rabbit) {this.rabbit = 토끼; } public void sendUseralerTtoEmail (사용자 사용자) {// convertAndSend (문자열 교환, 문자열 라우팅 키, 개체 객체), 객체 객체를 메시지 객체로 캡슐화하고 Exchange Rabbit.convertandSend ( "user.alert.email.exchange", "user.alerts.email", 사용자)로 보냅니다. }} 4. 소비자가 메시지를 받도록 구성하십시오.
Public Class UseralerThandler {public void handleUseralerTtoeMail (사용자) {System.out.println (사용자);} 3. javax.mail을 통해 이메일을 보냅니다
1. 종속성 패키지를 소개합니다.
<pectionency> <groupid> javax.mail </groupid> <artifactid> mail </artifactid> <bersion> 1.4.7 </version> </fectionency>
2. 메일 서버 정보를 구성합니다.
@BeanPublic MailSender MailSender (Environment Env) {javamailsenderimpl mailsender = 새로운 javamailsenderimpl (); // 163 Mailbox MailSender.Sethost (Env.GetProperty ( "MailServer.Host"))와 같은 일반 사서함, 비 SSL 인증 등이있는 경우; 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 Mailbox, QQ Mailbox Properties Propss = 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 (소품); 반품 메일 센더;} 3. 이메일 보내기.
@component ( "usermailservice") 공개 클래스 usermailserviceimpl은 usermailservice {private mailsender mailsender; @autowired public usermailserviceimpl (mailsender mailsender) {this.mailsender = mailsender; } public void sendsimpleUsermail (string to, user user) {simplemailmessage message = new SimplemailMessage (); message.setfrom ( "[email protected]"); message.setto (to); message.setsubject (user.getUername () + "메시지 확인"); message.settext (user.toString ()); MailSender.Send (메시지); }} 4. 소비자는 전송 전자 메소드를 호출 할 수 있습니다.
1. 참조 : 봄 실용 연습 (4 판).
2. 전체 코드는 github, 주소 : https://github.com/everseeker0307/register에 있습니다.
위의 것은 Spring Learning Notes 3의 이메일 기능을 보내는 메시지 큐 (RabbitMQ)입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!