Pengantar RabbitMQ:
MQ adalah nama lengkap dari antrian pesan. Antrian pesan (MQ) adalah metode komunikasi antara aplikasi dan aplikasi. Aplikasi berkomunikasi dengan membaca dan menulis pesan antrian (data untuk aplikasi) tanpa koneksi khusus untuk menautkannya. Pengiriman pesan mengacu pada komunikasi antar program dengan mengirim data dalam pesan, bukan dengan saling menelepon secara langsung, panggilan langsung biasanya digunakan dalam teknik seperti panggilan prosedur jarak jauh. Antrian mengacu pada aplikasi yang berkomunikasi melalui antrian. Penggunaan antrian menghilangkan persyaratan bahwa aplikasi penerima dan pengiriman dieksekusi secara bersamaan. Di antara mereka, produk MQ yang lebih matang adalah IBM WebSphere MQ.
Konten bagian ini adalah bahwa ketika pengguna mendaftar, alamat email pertama kali disimpan dalam antrian RabbitMQ, dan kemudian kembali ke pengguna untuk pendaftaran yang berhasil; Kemudian penerima antrian pesan mendapatkan pesan dari antrian dan mengirim email ke pengguna.
1. Pengantar Rabbitmq
Jika Anda tidak tahu tentang RabbitMQ sebelumnya, disarankan untuk melihat RabbitMQ cepat (manual cepat).
1. Pemasangan RabbitMQ di Mac.
2. Pengantar singkat untuk RabbitMQ.
Produser: Bertanggung jawab untuk mengirim pesan ke pertukaran.
Exchange: Menurut kebijakan tertentu, ia bertanggung jawab untuk menyimpan pesan ke dalam antrian yang ditentukan.
Antrian: Bertanggung jawab untuk menyimpan pesan.
Konsumen: Bertanggung jawab untuk mengekstraksi pesan dari antrian.
Binding: Bertanggung jawab atas pemetaan asosiasi pertukaran dan antrian. Pertukaran dan antrian adalah hubungan banyak-ke-banyak.
2. Implementasi RabbitMQ di Musim Semi
1. Memperkenalkan paket ketergantungan.
<dependency> <GroupId> org.springframework.amqp </groupid> <ArTifactId> Spring-AMQP </artifactid> <version> 1.6.0.release </version> </dependency> <ArtifAcid> org.springframework.amqp </groupid> <ArtifAcD> <version> 1.6.0.release </version> </gandendency>
2. File Konfigurasi Rabbitmq.
<? Xml Version = "1.0" Encoding = "UTF-8"?> <beans: beans xmlns = "http://www.springframework.org/schema/rabbit" xmlns: beans = "http://wwww.springframorker xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://www.spramework.org/schema/rabbit http://www.spramework.org.org http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-leans.xsd "> <! Konfigurasikan pabrik koneksi. Jika Anda tidak mengonfigurasi host, port, nama pengguna, kata sandi, maka localhost: 5672, tamu /tamu-> <!-<connection-factory id = "connectionFactory" />-> <connection-factory id = "connectionFactory" host = "localhost" port = "5672" username = "everseeker" kata sandi = "333 33" 5672. Konfigurasikan antrian antrian, pertukaran, dan pengikatan yang menggabungkannya bersama-> <!-dalam antrian dan pertukaran, ada atribut penting yang tahan lama, yang default ke true, yang dapat mencegah kehilangan data setelah downtime. -> <!-Dalam pendengar-kontainer, ada atribut pengakuan, yang default ke otomatis, yaitu, konsumen harus memiliki balasan setelah berhasil memproses pesan. Jika program konsumen menemukan pengecualian atau macet, pesan akan ditempatkan kembali kembali ke antrian-> <admin connection-factory = "ConnectionFactory" /> <Queue id = "UseralerertemailqueUe" name = "UserRoneque-Penggunaan" /Taban " /TRUE" /> <QuueD id = "USERALERTCELLONEDPONEQUETED" PENGGUNA " /TEBELLAULT." Benar-> <!-Ada 4 jenis pertukaran AMQP standar: langsung, topik, header, fanout, pilih sesuai dengan kebutuhan aktual. -> <!-Direct: Jika kunci perutean pesan secara langsung cocok dengan kunci perutean Bingding, pesan akan dialihkan ke antrian. -> <!-Topik: Jika kunci perutean pesan cocok dengan kunci perutean Bingding, pesan akan dialihkan ke antrian. -> <!-Header: Jika informasi dan nilai header dalam tabel parameter pesan cocok dengan tabel parameter pengikat, pesan akan dialihkan ke antrian. -> <!-Fanout: Tidak peduli apa pun kunci perutean pesan dan header/nilai tabel parameter, pesan akan dialihkan ke antrian. -> <Direct-Exchange Name = "user.alert.email.exchange" Tahir = "true"> <Bindings> <Binding Queue = "user.alerts.email"/> <!-Kunci routing default adalah sama dengan nama queue> </bindings> </Direct-exchange> </exchange edan.cal. " <mengikat antrian = "user.alerts.cellphone"/> </binding> </cired-exchange> <!-3. Konfigurasikan Rabbittemplate untuk mengirim pesan-> <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 = "HandleUsererertTocellphone" Queues = "UseralertCellphonequeUe"/> </pendengar-container> </taci: kacang>
Jika Anda mengkonfigurasi Koneksi -Aktor dan menggunakan kata sandi akun tamu/tamu default, org.springframework.amqp.amqPAuthenticationException: com.rabbitmq.client.AuthenticationFailureException: access_refused - Login ditolak menggunakan mekanisme otentikasi. Untuk detailnya lihat logfile broker. Solusinya adalah membuat pengguna baru dengan hak istimewa administrator dan memungkinkan akses ke host virtual.
Langkah -langkahnya adalah sebagai berikut:
1. Buka http: // localhost: 15672/
2. Admin -> Pengguna, Buat pengguna baru, izin administrator.
3. Host virtual, atur pengguna baru untuk memungkinkan akses.
3. Produser mengirim pesan ke pertukaran.
@Service ("UseralertService") Kelas Publik UseralertServiceImpl mengimplementasikan USERALERTService {private Rabbittemplate Rabbit; @Autowired Public UseralertServiceImpl (Rabbittemplate Rabbit) {this.rabbit = kelinci; } public void senduseralerTtoemail (pengguna pengguna) {// convertAndSend (String Exchange, String RoutingKey, Object Object), Encapsulate objek objek ke dalam objek pesan, dan kirim untuk bertukar rabbit.convertandsend ("user.alert.email.exchange", "user.alerts.email", user); }} 4. Konfigurasikan konsumen untuk menerima pesan.
Public Class UseralerThandler {public void handleUseralertToeMail (pengguna pengguna) {System.out.println (user);} 3. Kirim email melalui javax.mail
1. Memperkenalkan paket ketergantungan.
<dependency> <GroupId> javax.mail </groupid> <ArTifactId> mail </t ArtifactId> <version> 1.4.7 </version> </dependency>
2. Konfigurasikan informasi server email.
@BeanPublic MailSender MailSender (Environment Env) {JavamailsenderImpl MailSender = JAVAMAILSenderImpl baru (); // Jika itu adalah kotak surat normal, otentikasi non-SSL, dll., Seperti 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"); // Jika server surat mengadopsi otentikasi SSL, tambahkan konfigurasi berikut, seperti kotak surat Gmail, propser properti kotak surat qq = properti baru (); 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 (alat peraga); mengembalikan mailsender;} 3. Kirim email.
@Component ("USERMAILSERVICE") kelas publik USERMAILServiceImpl mengimplementasikan USERMAILService {private MailSender MailSender; @Autowired Publik USERMAILSERVICEIMPL (MailSender MailSender) {this.mailsender = MailSender; } public void SendSimpleUserMail (string ke, pengguna pengguna) {SimpleMailMessage message = new SimpleMailMessage (); message.setfrom ("[email protected]"); message.setto (to); message.setsubject (user.getusername () + "konfirmasi pesan"); message.setText (user.toString ()); mailsender.send (pesan); }} 4. Konsumen dapat menghubungi metode pengiriman email.
1. Referensi: Praktik Praktis Musim Semi (Edisi ke -4).
2. Kode lengkapnya ada di Github, alamat: https://github.com/everseeker0307/register.
Di atas adalah pesan antrian (RabbitMQ) yang mengirim fungsi email dari Spring Learning Notes 3 yang diperkenalkan kepada Anda. Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!