مقدمة إلى RabbitMQ:
MQ هو الاسم الكامل لقائمة انتظار الرسائل. قائمة انتظار الرسائل (MQ) هي وسيلة للاتصال بين التطبيقات والتطبيقات. تتواصل التطبيقات من خلال قراءة الرسائل القائمة الانتخابية وكتابةها (بيانات للتطبيقات) دون اتصال مخصص لربطها. يشير تسليم الرسائل إلى التواصل بين البرامج عن طريق إرسال البيانات في الرسائل ، بدلاً من الاتصال مباشرة ببعضها البعض ، عادة ما يتم استخدام المكالمات المباشرة في تقنيات مثل مكالمات الإجراءات عن بُعد. يشير قائمة الانتظار إلى التطبيق الذي يتواصل من خلال قائمة انتظار. يؤدي استخدام قوائم الانتظار إلى إلغاء شرط تنفيذ تطبيق الاستلام والإرسال في وقت واحد. من بينها ، منتجات MQ الأكثر نضجًا هي IBM WebSphere MQ.
محتوى هذا القسم هو أنه عندما يسجل المستخدم ، يتم تخزين عنوان البريد الإلكتروني لأول مرة في قائمة انتظار RabbitMQ ، ثم يتم إرجاعها إلى المستخدم للتسجيل الناجح ؛ ثم يحصل جهاز استقبال قائمة انتظار الرسائل على الرسالة من قائمة الانتظار ويرسل بريدًا إلكترونيًا إلى المستخدم.
1. مقدمة إلى RabbitMQ
إذا كنت لا تعرف RabbitMQ من قبل ، فمن المستحسن إلقاء نظرة على RabbitMQ السريع (دليل سريع).
1. تركيب الأرنب على ماك.
2. مقدمة موجزة إلى Rabbitmq.
المنتج: مسؤول عن إرسال الرسائل إلى التبادل.
التبادل: وفقًا لبعض السياسات ، فهي مسؤولة عن تخزين الرسائل في قائمة الانتظار المحددة.
قائمة الانتظار: مسؤولة عن حفظ الرسائل.
المستهلك: مسؤول عن استخراج الرسائل من قائمة الانتظار.
ملزمة: مسؤولة عن رسم خرائط لجمعية التبادل والطوابع. التبادل وقائم الانتظار هي علاقات كثيرة إلى العديد.
2. تنفيذ RabbitMQ في الربيع
1. إدخال حزم التبعية.
<Rependency> <roupEd> org.springframework.amqp </rougiD> <artifactid> Spring-AMQP </shintifactid> <الإصدار> 1.6.0.Release </version> </rependency> <sperency> <roupiD> org.springframework.amqp </rogleid> <splect> 1.6.0.release </version> </sependency>
2. ملف تكوين RabbitMQ.
<؟ Xmlns: XSI = "http://www.w3.org/2001/xmlschema-instance" http://www.springframework.org/schema/rabbit/spring-rabbit.xsd 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" password = "333" /> <! تكوين قائمة انتظار قائمة الانتظار ، والتبادل ، والربط الذي يجمع بينها معًا-> <!-في قائمة الانتظار والتبادل ، هناك سمة مهمة دائمة ، والتي تتخلف عن صواب ، والتي يمكن أن تمنع فقدان البيانات بعد التوقف. -> <!-في المستمع ، هناك سمة الاعتراف ، والتي يتم التخلف عن سداد تلقائي ، أي أن المستهلك يجب أن يكون لديه رد بعد معالجة الرسالة بنجاح. إذا واجه برنامج المستهلك استثناءًا أو تعطلًا ، فسيتم إعادة وضع الرسالة مرة أخرى إلى قائمة الانتظار-> <admin connection-factory = "connectionFactory" /> <queue id = "usteralertemailqueue" name = "user.alerts.email" dateant = "true" /> <queue id = "useralertcellphone" <!-هناك 4 أنواع من تبادل AMQP القياسي: Direct ، Topic ، Measers ، Fanout ، اختر وفقًا للاحتياجات الفعلية. -> <!-مباشرة: إذا كان مفتاح التوجيه للرسالة يتطابق مباشرة مع مفتاح التوجيه لل bingding ، فسيتم توجيه الرسالة إلى قائمة الانتظار. -> <!-الموضوع: إذا كان مفتاح التوجيه للرسالة يتطابق مع مفتاح التوجيه في Bingding ، فسيتم توجيه الرسالة إلى قائمة الانتظار. -> <!-الرؤوس: إذا كانت معلومات الرأس والقيم في جدول معلمة الرسالة تطابق جدول المعلمة الربط ، فسيتم توجيه الرسالة إلى قائمة الانتظار. -> <!-Fanout: بغض النظر عن مفتاح التوجيه للرسالة ورأس/قيمة جدول المعلمة ، سيتم توجيه الرسالة إلى قائمة الانتظار. -> <name-exchange direct = "user.alert.email.exchange" deener = "true"> <bindings> <queue queue = "user.alerts.email"/> <! queue = "user.alerts.cellphone"/> </bindings> </direct-exchange> <!-3. قم بتكوين RabbitTemplate لإرسال الرسائل-> <template id = "rabbittemplate" connection-factory = "connectionFactory" /> <!-4. قم بتكوين حاوية المستمع والمستمع لتلقي الرسائل-> <Beans: Bean id = "userListener" /> <مستمع connection-connection-factory = "connectionFactory" confnowledge = "auto"> <مستمع ref = "useristerener" method = "gallengeLerTertoemail" queues = useralertemailqueue " queues = "USERALERTCellPhoneQueue"/> </beader-container> </beans: beans>
إذا قمت بتكوين Connection -factory واستخدمت كلمة مرور حساب الضيف/الضيف الافتراضي ، org.springframework.amqp.amqpauthenticationException: com.RabbitMq.Client.AuthenticationFailureException: Access_Refused - تم رفض تسجيل الدخول باستخدام آلية المصادقة. لمزيد من التفاصيل ، انظر ملف تسجيل الوسيط. يتمثل الحل في إنشاء مستخدم جديد مع امتيازات المسؤول والسماح بالوصول إلى المضيف الظاهري.
الخطوات كما يلي:
1. افتح http: // localhost: 15672/
2. المسؤول -> المستخدمين ، إنشاء مستخدم جديد ، أذونات المسؤول.
3. المضيفين الظاهري ، قم بتعيين مستخدمين جدد للسماح بالوصول.
3. المنتج يرسل رسالة إلى Exchange.
service ("USERALERTSERVICE") الطبقة العامة USERALERTServiceImpl تنفذ useralertservice {private rabbittemplate rabbit ؛ @autowired public uSeralerTServiceImpl (rabbittemplate rabbit) {this.Rabbit = Rabbit ؛ } void public senduseralerttoemail (مستخدم المستخدم) {// convertandSend (string exchange ، string routingkey ، object) ، قم بتغليف كائن الكائن في كائن رسالة ، وإرساله إلى Exchange rabbit.convertandsend ("user.alert.email.exchange" ، "user.alerts.email" ، user) ؛ }} 4. تكوين المستهلكين لتلقي الرسائل.
الفئة العامة USERALERTHANDLER {public void GeneoruseralertToEmail (مستخدم المستخدم) {system.out.println (user) ؛} 3. إرسال رسائل البريد الإلكتروني من خلال javax.mail
1. إدخال حزم التبعية.
<Rependency> <roupiD> javax.mail </rougiD> <StifactId> البريد </artifactid> <sored> 1.4.7 </version> </sependent>
2. تكوين معلومات خادم البريد.
beanpublic mailsender mailsender (Environment env) {javamailsenderImplplplplsender = 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 = خصائص جديدة () ؛ 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 (الدعائم) ؛ إرجاع mailsender ؛} 3. إرسال البريد الإلكتروني.
component ("UserMailService") الطبقة العامة usermailserviceImpl تنفذ usermailservice {private mailsender mailsender ؛ Autowired public UserMailServiceImpl (mailsender mailsender) {this.mailsender = mailsender ؛ } void public sendSimpleuserMail (سلسلة إلى ، المستخدم المستخدم) {simpleMailMessage message = new SimpleMailMessage () ؛ message.setFrom (" message.setto (إلى) ؛ message.SetSubject (user.getUserName () + "تأكيد الرسائل") ؛ message.settext (user.toString ()) ؛ mailsender.send (message) ؛ }} 4. يمكن للمستهلك الاتصال بالطريقة الإلكترونية إرسال.
1. المراجع: الربيع الممارسة العملية (الطبعة الرابعة).
2. الرمز الكامل في GitHub ، العنوان: https://github.com/everseeker0307/register.
ما ورد أعلاه هو قائمة انتظار الرسائل (RabbitMQ) إرسال وظيفة البريد الإلكتروني لملاحظات التعلم الربيع 3 المقدمة لك. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!