هناك العديد من البرامج التعليمية على طريقة التثبيت لـ RabbitMQ على الإنترنت ، لذلك لن أكررها هنا.
استخدم rabbitmq لنقل السلاسل والأشياء على سبرينغ بوت. المثال الوارد في هذه المقالة هو نقل الكائنات والسلاسل بين مشروعين مختلفين.
التبعية RabbitMQ (نفس التكوين في كلا المشروعين):
<Rependency> <roupend> org.springframework.boot </rougiD> <insifactid> Spring-Boot-Starter-AMQP </shintifactid> </preadency>
ملف تكوين POM (نفس التكوين في كلا المشروعين):
spring.application.name: demo1 // اسم المشروع spring.ribbitmq.host: 192.168.1.111 // اكتب ipspring.robbitmq /Spring.RabbitMq.Publisher-Confirms: Truespring.RabbitMQ.Publisher-Returns:
نقل الحرف النقل المتبادل (نوع الموضوع المستخدم في هذا المثال)
1>. أولاً ، اكتب ملف التكوين في المنتج (المشروع أ) ، حيث يتم إنشاء قائمة انتظار قائمة الانتظار ، ويتم تنفيذ تبادل التبديل والربط
استيراد org.springframework.amqp.core.binding ؛ استيراد org.springframework.amqp.core.bindingbuilder ؛ استيراد org.springframework.amqp.core.queue org.springframework.beans.factory.annotation.qualifier ؛ استيراد org.springframework.context.annotation.bean ؛ استيراد org.springframework.context.annotation.Configuration ؛ */@configurationpublic class senderconfigration {/** *@الوصف: إنشاء موضوع قائمة انتظار جديد. }/***@الوصف: تحديد التبديل*@DATA: 16: 15 2017/12/22*/bean public Topicexchange Exchange () {return new TopicexChange ("Exchange") ؛ }/** *@الوصف: يرتبط التبديل رسائل قائمة الانتظار يربط التبديل مع topic.messages *@data: 16: 18 2017/12/22 */binding bindingexchangemessages (QUALIFIER ("الرسائل") QueueMessages ، TopicexChange Exchange) {return bindingbuilder.bind (QueUemessages). to (Exchange) .with ("topic.messages") ؛ }}2>. في الخطوة الثانية (البند أ) ، يرسل المنتج الرسالة إلى قائمة انتظار الرسائل.
/** * author: fdh * description: * date: إنشاء في 14:15 2017/12/22 */ @ControlRpublic Class RabbitController {Autowired Private AmqPtemplate AmqPtemplate ؛ requestmapping ("/sendss") public void send1 () {amqptemplate.convertandsend ("Exchange" ، "topic.messages" ، "hello topic.messages rabbitmq") ؛ }}3>. بعد ذلك ، اكتب مستمعًا على جانب المستهلك (المشروع ب). سيضع التبديل الرسالة التي ينتجها المنتج في قائمة انتظار الرسائل المطابقة استنادًا إلى مفتاح التوجيه المربوطة (Topic.Messages). سيستمع المستمع إلى قائمة انتظار الرسائل المقابلة للحصول على رسائل موجهة إلى قائمة انتظار الرسائل.
استيراد org.springframework.beans.factory.annotation. */ @ComponentPublic Class Receiver {RabbitListener (queues = "topic.messages") public void process2 (String str1) يلقي classnotfoundException {system.out.println ("الرسائل:"+str1) ؛ system.out.println (thread.currentThRead (). getName ()+"تلقيت رسالة من موضوع قائمة قائمة Topic.Message:"+str1) ؛ } وبهذه الطريقة ، يتم كتابة نقل السلسلة البسيط. دعنا نفتح التعيين المحدد للتو: 192.168.1.111:8080/sendss
سترى رسالة مطبوعة في نافذة وحدة التحكم على جانب المستهلك
ما سبق هو مثال بسيط لإرسال السلاسل.
2. يركز ما يلي على نقل الكائنات بين المستهلكين والمنتجين.
يجب أن يتم نقل الكائنات في المنتج (A) ، أي ، يتم تحويل الكائن إلى صفيف بايت للناقل ، وفي المستهلك ، يتم إلغاء التخلص من صفيف البايت المحول إلى كائن. هناك العديد من الطرق للتسلسل والتسلسل ، وهنا نستخدم الواجهة القابلة للتسلسل لـ Java
1>. إنشاء فصول كيان في مشاريع المنتج (المشروع أ) والمستهلك (المشروع ب).
! يلاحظ! : إنشاء فئة كيان جديدة. جافا يجب أن تكون فئة الكيان متسقة في موضع المشاريع A و B ، أي أن اسم الحزمة يجب أن يكون متسقًا. في هذا المشروع ، Boy.java في المشاريع A و B: استيراد com.fengdonghao.shiro.bean.boy ؛
يجب أن تكون فصول الكيانات متسقة أيضًا.
package com.fengdonghao.shiro idgeneratedValue private int id ؛ اسم السلسلة الخاصة ؛ عصر INT الخاص ؛ Override public string toString () {return "boy {" + "age =" + age + "، id =" + id + "، name = '" + name +'/' +'} '؛ } // تم حذف أساليب getter و setter هنا} 2>. قم بتكوين قائمة انتظار الرسائل ، والتبديل ، وربط الربط في المنتج (أ) ، والخطوة الأولى في المثال 1 هي نفسها
3>. اكتب رسم خرائط آخر في RabbitController.java في المنتج (أ) ، على النحو التالي
requestmapping ("/send") public void sendMessage () {boy boy = new boy () ؛ boy.setName ("tim") ؛ boy.setage (11) ؛ System.out.println (Boy) ؛ // فيما يلي عملية التسلسل // كتابة OBJ لتقديم ObjectOutputStream OOS = NULL ؛ حاول {OOS = new ObjectOutputStream (FileOutputStream جديد (ملف جديد ("E: //webpackage//a.txt"))) ؛ // تخزين صفيف البايت المتسلسل في هذا الدليل OOS.WriteObject (Boy) ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } أخيرًا {ioutils.closequietly (OOS) ؛ } rabbitmqservice.send ("تم تسلسل الكائن") ؛ 4>. تخلص من صفيف البايت في المستهلك (ب).
في جهاز الاستقبال ، أعد كتابة المستمع على سبيل المثال 1 مفتاح
@rabbitListener (queues = "topic.messages") public void process2 (String str1) {system.out.println (thread.currentThRead (). getName ()+"تلقي رسالة من موضوع قائمة الانتظار. ملف الملف = ملف جديد ("e: //webpackage//a.txt") ؛ // يجب أن تكون المسارات بين المستهلكين والمنتجين متسقة قبل قراءة الملف وتحليله. ObjectInputStream OIS = NULL ؛ حاول {ois = new ObjectInputStream (FileInputStream (ملف جديد)) ؛ Boy NewUser = (boy) ois.ReadObject () ؛ System.out.println ("desequence:"+newuser) ؛ system.out.println ("desequence:"+newUser.getName ()) ؛ system.out.println ("desequence:"+newUser.getName ()) ؛ System.out.println ("desequence بعد getage"+newUser.getage ()) ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } catch (classNotFoundException e) {E.PrintStackTrace () ؛ } أخيرًا {ioutils.closequietly (OIS) ؛ حاول {fileUtils.forcedelete (file) ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }} system.out.println ("الرسائل:"+str1) ؛ } تعيين التحقق: IP: 8080/إرسال
النتائج كما يلي:
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.