يتحدث هذا المقال بشكل رئيسي عن التكامل الأساسي. لنبدأ الرمز أولاً ، ثم نتحدث عن الميزات المتقدمة.
بعض المصطلحات في الأرانب
إذا فتحت وحدة التحكم على شبكة الإنترنت ، فستجد أنه من الصعب فهم أحد الأطراف. اسمحوا لي أن أشرح ذلك باختصار أدناه.
تبادل
التبديل يشبه جهاز التوجيه. نرسل أولاً الرسائل إلى المفتاح ، ثم يقوم التبديل بتسليم الرسائل إلى قائمة الانتظار المقابلة وفقًا لمفتاح التوجيه. (من المهم أن نفهم هذا المفهوم ، وهذا ينعكس تمامًا في الكود اللاحق)
طابور
من السهل فهم قائمة الانتظار ، لذلك ليست هناك حاجة لشرح ذلك.
ملزم
كيف يعرف التبديل أي قائمة انتظار لتقديم هذه الرسالة؟ هذا يتطلب الربط. من المحتمل أن يكون ذلك: استخدم مفتاح Roundingkey لربط قائمة انتظار بتبادل معين ، بحيث يعرف المفتاح أي قائمة انتظار لتسليم الرسالة وفقًا لمفتاح التوجيه. (هذا ينعكس بالكامل في الكود اللاحق)
انضم إلى تبعيات Rabbitmq Maven
<Rependency> <roupiD> org.springframework.boot </rougiD> <StifactId> Spring-Boot-Starter-AMQP </stifactid> </sependency>
أضف تبعية أخرى (يمكن حذف هذه التبعية ، بشكل أساسي لتبسيط الكود)
<Rependency> <roupeD> cn.hutool </groupId> <StifactId> Hutool-All </shintifactid> <soph> 4.0.2 </version> </premed>
rabbitmqconfig.java التكوين
ConfigurationPublic Class RabbitMqConfig {public Final Static String Queue_Name = "Spring-Boot-Queue" ؛ سلسلة ثابتة للسلسلة الثابتة العامة exchange_name = "spring-boot-exchange" ؛ السلسلة الثابتة العامة المتراكبة routing_key = "spring-boot-key" ؛ // إنشاء قائمة انتظار قائمة انتظار قائمة انتظار عام () {return new Queue (queue_name) ؛ } // إنشاء نوع موضوع Exchange @bean public topicexchange Exchange () {return new TopicexChange (Exchange_Name) ؛ } // استخدم مفتاح التوجيه (RoutingKey) لربط قائمة الانتظار (قائمة انتظار قائمة الانتظار ، Exchange Topicexchange) {return bindingbuilder.bind (Queue) .to (Exchange) .with (Routing_key) ؛ } bean public connectionFactory ConnectionFactory () {CachingConnectionFactory ConnectionFactory = جديد CachingConnectionFactory ("127.0.0.1" ، 5672) ؛ ConnectionFactory.SetUserName ("Guest") ؛ ConnectionFactory.setPassword ("Guest") ؛ إرجاع اتصال ConnectionFactory ؛ } bean public rabbittemplate rabbittemplate (connectionFactory ConnectionFactory) {return new RabbitTemplate (connectionFactory) ؛ }}منتج
ما عليك سوى الاتصال بـ RabbitTemplate's ConvertAndSend مباشرة. يمكن رؤيته أيضًا من الكود التالي أننا لا نرسل الرسالة مباشرة إلى قائمة الانتظار ، ولكن أولاً أرسلها إلى المفتاح ، ثم يقوم المفتاح بتسليم رسالتنا إلى قائمة الانتظار المقابلة وفقًا لمفتاح التوجيه.
RestControllerPublic Class ProduconTroller {Autowired private rabbittemplate rabbittemplate ؛ getMapping ("/sendMessage") الكائن العام sendMessage () {new thread (()-> {for (int i = 0 ؛ i <100 ؛ i ++) {string value = new dateTime (). rabbittemplate.convertandsend (rabbitmqconfig.exchange_name ، rabbitmqconfig.routing_key ، value) ؛ العودة "موافق" ؛ }}مستهلك
كما أنها بسيطة للغاية للمستهلكين. إنهم فقط بحاجة إلى إضافة @rabbitlistener تعليق إلى الطريقة المقابلة وتحديد اسم قائمة الانتظار المراد الاستماع إليها.
ComponentPublic Class Classe {RabbitListener (queues = rabbitmqconfig.queue_name) public void consumptionmessage (string message) {console.log ("تستهلك رسالة {}" ، رسالة) ؛ }}تشغيل المشروع
قم بتشغيل المشروع ، ثم افتح المتصفح وأدخل http://localhost:9999/sendMessage . على وحدة التحكم ، يمكنك رؤية المنتجين يرسلون الرسائل باستمرار ، والمستهلكين يستهلكون باستمرار الرسائل.
افتح وحدة التحكم على الويب RabbitMQ ويمكنك أيضًا رؤية المفاتيح وقوائم الانتظار التي قمنا بتكوينها في الكود الآن ، بالإضافة إلى معلومات الربط.
انقر لإدخال تفاصيل التبادل
خاتمة
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.