Artikel ini terutama berbicara tentang integrasi dasar. Mari kita mulai kode terlebih dahulu, dan kemudian bicarakan fitur -fitur canggih.
Beberapa istilah di Rabbitmq
Jika Anda membuka konsol web RabbitMQ, Anda akan menemukan bahwa salah satu exh -exhmer sulit dipahami. Izinkan saya menjelaskannya secara singkat di bawah ini.
Menukarkan
Sakelar seperti router. Kami pertama -tama mengirim pesan ke sakelar, dan kemudian sakelar mengirimkan pesan ke antrian yang sesuai sesuai dengan kunci perutean. (Penting untuk memahami konsep ini, dan ini sepenuhnya tercermin dalam kode selanjutnya)
Antre
Antriannya mudah dimengerti, jadi tidak perlu menjelaskannya.
Mengikat
Bagaimana sakelar mengetahui antrian mana yang akan menyampaikan pesan ini? Ini membutuhkan ikatan. Mungkin: Gunakan RoutingKey untuk mengikat antrian ke pertukaran tertentu, sehingga sakelar tahu antrian mana yang akan mengirimkan pesan sesuai dengan kunci perutean. (Ini sepenuhnya tercermin dalam kode selanjutnya)
Bergabunglah dengan dependensi RabbitMQ Maven
<dependency> <GroupId> org.springframework.boot </groupId> <ArTifactId> Spring-boot-starter-AMQP </RiTtifacTID> </dependency>
Tambahkan ketergantungan lain (ketergantungan ini dapat dihilangkan, terutama digunakan untuk menyederhanakan kode)
<dependency> <GroupId> cn.hutool </groupid> <ArTifactId> hutool-all </artifactid> <version> 4.0.2 </version> </dependency>
Konfigurasi RabbitMQConfig.java
@ConfigurationPublic kelas RabbitMqConfig {public static string statis queue_name = "spring-boot-queue"; public final static string Exchange_name = "Spring-Boot-Exchange"; string statis final publik routing_key = "spring-boot-key"; // Buat antrian antrian publik @bean @bean () {return baru antrian (queue_name); } // Buat tipe topik Exchange @Bean Public TopicexChange Exchange () {return new TopicexChange (Exchange_Name); } // Gunakan tombol routing (routingKey) untuk mengikat antrian (antrian antrian, topicexchange exchange) {return bindingBuilder.bind (antrian) .to (Exchange) .dith (routing_key); } @Bean ConnectionFactory ConnectionFactory () {CachingConnectionFactory ConnectionFactory = CachingConnectionFactory baru ("127.0.0.1", 5672); ConnectionFactory.SetUserName ("Guest"); ConnectionFactory.SetPassword ("Guest"); mengembalikan ConnectionFactory; } @Bean Public Rabbittemplate Rabbittemplate (ConnectionFactory ConnectionFactory) {return new Rabbittemplate (ConnectionFactory); }}Produsen
Panggil saja metode ConvertAndSend Rabbittemplate secara langsung. Ini juga dapat dilihat dari kode berikut bahwa kami tidak mengirim pesan langsung ke antrian, tetapi pertama -tama kirim ke sakelar, dan sakelar kemudian mengirimkan pesan kami ke antrian yang sesuai sesuai dengan kunci perutean.
@RestControllerPublic Class ProduserController {@Autowired Private Rabbittemplate Rabbittemplate; @GetMapping ("/sendMessage") objek publik sendMessage () {thread baru (()-> {for (int i = 0; i <100; i ++) {string value = new DateTime (). ToString ("yyyy-mm-dd hh: mm: ss"); konsol.log ("kirim pesan {"), "send {"); console.log ("kirim pesan {"); rabbittemplate.convertandsend (rabbitmqconfig.exchange_name, rabbitmqconfig.routing_key, value); Kembalikan "OK"; }}konsumen
Ini juga sangat sederhana bagi konsumen. Mereka hanya perlu menambahkan anotasi @RabbitListener ke metode yang sesuai dan menentukan nama antrian yang akan didengarkan.
Konsumen kelas @ComponentPublic {@rabbitListener (queuees = rabbitmqconfig.queue_name) public void ConsumptionMessage (string message) {console.log ("Konsumsi pesan {}", pesan); }}Jalankan proyek
Jalankan proyek, lalu buka browser dan masukkan http://localhost:9999/sendMessage . Di konsol, Anda dapat melihat produsen terus -menerus mengirim pesan, dan konsumen terus -menerus mengonsumsi pesan.
Buka konsol web RabbitMQ dan Anda juga dapat melihat sakelar dan antrian yang kami konfigurasikan dalam kode sekarang, serta informasi yang mengikat.
Klik untuk memasukkan detail pertukaran
Kesimpulan
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.