บทความนี้ส่วนใหญ่พูดถึงการรวมขั้นพื้นฐาน มาเริ่มรหัสก่อนแล้วพูดคุยเกี่ยวกับคุณสมบัติขั้นสูง
บางคำใน RabbitMQ
หากคุณเปิดคอนโซลเว็บ RabbitMQ คุณจะพบว่าหนึ่งใน Exhanges นั้นยากที่จะเข้าใจ ให้ฉันอธิบายสั้น ๆ ด้านล่าง
แลกเปลี่ยน
สวิตช์เป็นเหมือนเราเตอร์ ก่อนอื่นเราจะส่งข้อความไปยังสวิตช์จากนั้นสวิตช์จะส่งข้อความไปยังคิวที่สอดคล้องกันตามคีย์การกำหนดเส้นทาง (เป็นสิ่งสำคัญที่จะต้องเข้าใจแนวคิดนี้และสิ่งนี้สะท้อนให้เห็นอย่างเต็มที่ในรหัสที่ตามมา)
คิว
คิวเข้าใจง่ายดังนั้นจึงไม่จำเป็นต้องอธิบาย
ผูกพัน
สวิตช์รู้ว่าคิวใดที่จะส่งข้อความนี้ได้อย่างไร สิ่งนี้ต้องมีผลผูกพัน อาจเป็น: ใช้ RoutingKey เพื่อผูกคิวกับการแลกเปลี่ยนบางอย่างเพื่อให้สวิตช์รู้ว่าคิวใดที่จะส่งข้อความไปยังคีย์การกำหนดเส้นทาง (สิ่งนี้สะท้อนให้เห็นอย่างสมบูรณ์ในรหัสที่ตามมา)
เข้าร่วมการพึ่งพา Rabbitmq Maven
<การพึ่งพา> <roupId> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Starter-AMQP </artifactId>
เพิ่มการพึ่งพาอื่น (การพึ่งพานี้สามารถละเว้นได้ส่วนใหญ่ใช้เพื่อทำให้รหัสง่ายขึ้น)
<Effercy> <mergiED> CN.HUTOOL </groupID> <ArtIfactId> HUTOOL-ALL </ARTIFACTID> <Sersion> 4.0.2 </เวอร์ชัน> </การพึ่งพา>
การกำหนดค่า rabbitmqconfig.java
@ConfigurationPublic คลาส rabbitmqconfig {สาธารณะสุดท้ายคงที่ String queue_name = "Spring-Boot-Queue"; Public Static String สุดท้าย Exchange_name = "Spring-Boot-Exchange"; สาธารณะขั้นสุดท้ายสตริงการกำหนดเส้นทาง _key = "Spring-Boot-Key"; // สร้างคิวคิวสาธารณะคิวสาธารณะ () {ส่งคืนคิวใหม่ (queue_name); } // สร้างประเภทหัวข้อแลกเปลี่ยน @Bean Public TopicexChange Exchange () {ส่งคืน TopicexChange ใหม่ (Exchange_Name); } // ใช้คีย์การกำหนดเส้นทาง (RoutingKey) เพื่อผูกคิว (คิวคิวการแลกเปลี่ยน topicexchange) {ส่งคืน bindingbuilder.bind (คิว) .to (แลกเปลี่ยน). with (routing_key); } @Bean Public ConnectionFactory ConnectionFactory () {CachingConnectionFactory ConnectionFactory = ใหม่ CachingConnectionFactory ("127.0.0.1", 5672); ConnectionFactory.SetUserName ("แขก"); ConnectionFactory.SetPassword ("แขก"); ส่งคืน ConnectionFactory; } @Bean สาธารณะ Rabbittemplate Rabbittemplate (ConnectionFactory ConnectionFactory) {ส่งคืน Rabbittemplate ใหม่ (ConnectionFactory); -ผู้ผลิต
เพียงโทรหาวิธี ConvertandSend ของ Rabbittemplate โดยตรง นอกจากนี้ยังสามารถเห็นได้จากรหัสต่อไปนี้ที่เราไม่ส่งข้อความไปยังคิวโดยตรง แต่ก่อนอื่นส่งไปยังสวิตช์และสวิตช์จากนั้นส่งข้อความของเราไปยังคิวที่เกี่ยวข้องตามคีย์การกำหนดเส้นทาง
@RestControllerPublic คลาส Producocontroller {@autowired ส่วนตัว Rabbittemplate Rabbittemplate; @getMapping ("/sendMessage") วัตถุสาธารณะ sendMessage () {เธรดใหม่ (()-> {สำหรับ (int i = 0; i <100; i ++) {ค่าสตริง = datetime ใหม่ (). toString ("yyyy-mm-dd hh: mm: ss"); คอนโซล Rabbittemplate.ConvertandSend (rabbitmqconfig.exchange_name, rabbitmqconfig.routing_key, ค่า); กลับ "ตกลง"; -ผู้บริโภค
นอกจากนี้ยังง่ายมากสำหรับผู้บริโภค พวกเขาเพียงแค่ต้องเพิ่มคำอธิบายประกอบ @RabBitListener ลงในวิธีการที่เกี่ยวข้องและระบุชื่อของคิวที่จะฟัง
@componentpublic คลาสผู้บริโภค {@rabbitlistener (queues = rabbitmqconfig.queue_name) โมฆะการบริโภคโมฆะสาธารณะ (ข้อความสตริง) {console.log ("การบริโภคข้อความ {}", ข้อความ); -เรียกใช้โครงการ
เรียกใช้โครงการจากนั้นเปิดเบราว์เซอร์และป้อน http://localhost:9999/sendMessage บนคอนโซลคุณสามารถเห็นผู้ผลิตส่งข้อความอย่างต่อเนื่องและผู้บริโภคที่บริโภคข้อความอย่างต่อเนื่อง
เปิดคอนโซลเว็บ RabbitMQ และคุณยังสามารถดูสวิตช์และคิวที่เรากำหนดค่าไว้ในรหัสตอนนี้รวมถึงข้อมูลที่มีผลผูกพัน
คลิกเพื่อป้อนรายละเอียดการแลกเปลี่ยน
บทสรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น