
غالبًا ما يفضل مطورو Java ، عند استخدام واجهة JMS ، العمل مع Spring Framework. يمكن لـ Spring تبسيط تشفير التطبيقات الجديدة من خلال توفير قوالب للأنماط الشائعة وقد تم استخدامه بنجاح لسنوات عديدة مع فئات MQ JMS. فئة Spring JmsTemplate هي واجهة أساسية ، لكنها لا تزال تعتمد على التكوينات والتبعيات في التعليمات البرمجية.
يتضمن إطار الربيع وحدات مختلفة لتلبية الاحتياجات المختلفة. أحد هذه المكونات هو Spring Boot. تقوم مشغلات Spring Boot بسحب جميع التبعيات ومكتبات التكوين التلقائي اللازمة لاستخدام تقنية معينة. هذا يجعل من السهل جدًا البدء في تطبيق جديد وتقنية ، أسرع من العمل مباشرة مع فئات مثل JmsTemplate. لذلك ، كيف يمكننا الاستفادة من هذا الوصول السهل لتطبيقات MQ؟
ترجم بواسطة
middle_javaمارك ه تايلورتم النشر في 04/03/2018 / تم التحديث بتاريخ 12/06/2018
11 تعليقفي
هذا المقال ، وصفت كيفية تنزيل فئات MQ مباشرةً من Java
Maven Central Repository Java. والآن سوف نستخدم هذا لإنشاء
Spring Boot Starter لـ MQ . يمكنك تنزيل شفرة المصدر الكاملة للوحدة من
GitHub .
الشروع في العمل مع MQ Spring Boot
بادئ ذي بدء ، نحن بحاجة إلى مدير قائمة الانتظار قيد التشغيل. ثم سنقوم بإنشاء تطبيق يصل إلى مدير قائمة الانتظار هذا.
بدء تشغيل مدير قائمة انتظار في حاوية
للبدء بسرعة ، يمكنك استخدام حاوية
IBM MQ للمطورين ، والتي تدير عمليات الخادم. عند تشغيل هذه الحاوية ، يتم إنشاء العديد من الكائنات افتراضيًا وتعرف تعريفاتها في وحدة التكوين التلقائي. تتوافق القيم الافتراضية مع القيم المطلوبة بواسطة مدير قائمة انتظار الحاوية.
هذا يعني أنه يمكنك بدء إدارة قائمة الانتظار باستخدام بيئة Docker والاتصال بها دون إعدادات إضافية. يمكنك بدء تشغيل الحاوية على Linux باستخدام الأمر التالي:
docker run --env LICENSE=accept --env MQ_QMGR_NAME=QM1 \ --publish 1414:1414 \ --publish 9443:9443 \ --detach \ ibmcom/mq
مثال التطبيق
يستخدم منهجًا متوافقًا مع طراز تطبيق JMS في
دليل بدء تشغيل
Spring JMS . لقد تابعت مسار استيراد هذا المشروع إلى مساحة عمل Eclipse واستخدمت
عملية إنشاء
gradle ، ولكن العملية المستندة إلى
maven تعمل أيضًا. كتمرين ، استخدمت التكوين المخضرم من سطر الأوامر بدلاً من IDE Eclipse.
يعمل نفس الرمز من المثال مع MQ مع الحد الأدنى من التعديل:
- قم بتعديل موفر المراسلة المصدر في قائمة التبعية للإشارة إلى حزمة IBM MQ.
- قم بتغيير اسم قائمة الانتظار في Application.java (يستخدم المثال "صندوق البريد") إلى "DEV.QUEUE.1" - هذا هو قائمة الانتظار المحددة مسبقًا بواسطة تكوين المطور في حاوية Docker. إذا لم تستخدم معلمات التكوين Developer الافتراضية ، فسيتعين عليك إما تعيين اسم قائمة الانتظار إلى نفس قائمة الانتظار الحالية ، أو تحديد قائمة الانتظار الجديدة المطابقة.
يحتوي ملف
build.gradle المعدل الذي يتحكم في
التحويل البرمجي الآن على:
dependencies { compile("com.ibm.mq:mq-jms-spring-boot-starter:+") compile("com.fasterxml.jackson.core:jackson-databind") }
إذا كنت تفضل استخدام Maven ، فإن القسم المقابل في
pom.xml هو كما يلي:
<dependencies> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> <dependency> <groupId>com.ibm.mq</groupId> <artifactId>mq-jms-spring-boot-starter</artifactId> <version>0.0.3</version> </dependency> </dependencies>
الفرق الحقيقي الوحيد هو أن إصدارًا معينًا من وحدة MQ Spring Boot محددًا في تكوين Maven.
التكوين الافتراضي
تبدأ أسماء سمات التكوين MQ Boot Starter بالبادئة ibm.mq. سمات افتراضيا
ibm.mq.queueManager=QM1 ibm.mq.channel=DEV.ADMIN.SVRCONN ibm.mq.connName=localhost(1414) ibm.mq.user=admin ibm.mq.password=passw0rd
أنها تتوافق مع القيم الافتراضية للحاوية Docker.
خيارات التكوين المتقدمة
إذا كان لديك بالفعل مدير قائمة انتظار MQ قيد التشغيل وتريد استخدامه ، يمكنك بسهولة تغيير التكوين الافتراضي عن طريق تحديد القيم التي تم تجاوزها. يمكن أن يكون مدير قائمة الانتظار خدمة محلية أو حتى خدمة مستضافة على
IBM Cloud . يُعد ملف
application.properties في مشروع Java إحدى طرق إخراج هذه السمات من المشروع. التكوين نافذة المفعول دون أي تغييرات التعليمات البرمجية.
حدد اسم سمة مدير الصف:
ibm.mq.queueManager=QM1
لاتصالات العميل بمدير قائمة الانتظار ، يجب عليك أيضًا تعيين
ibm.mq.channel ibm.mq.connName
إذا لم يتم تحديد قناة أو اسم connName ، فيُفترض استخدام مدير قائمة الانتظار المحلي. يدعم مكون التكوين أيضًا بعض السمات المتعلقة بـ TLS. يتم وصفها بمزيد من التفاصيل في ملف README ، لكن قيمها الافتراضية خالية. قد تحتاج أيضا إلى تثبيت
ibm.mq.user ibm.mq.password=passw0rd
لتجاوز القيم الافتراضية. يمكن ترك هذه السمات فارغة لاستخدام معرف المستخدم المحلي لنظام التشغيل دون مصادقة ، إذا سمح به مدير قائمة الانتظار.
مثال على محتويات ملف
application.properties :
ibm.mq.queueManager=QM1 ibm.mq.channel=SYSTEM.DEF.SVRCONN ibm.mq.connName=server.example.com(1414) ibm.mq.user=user1 ibm.mq.password=passw0rd
بعد ذلك ، سيقوم Spring Boot بإنشاء ConnectionFactory يمكن استخدامه للتفاعل مع مدير قائمة الانتظار.
اختبار برنامج العينة
يمكنك تشغيل البرنامج عينة باستخدام
gradle bootRun
. أو استخدم maven لتشغيل
mvn package
java -jar ./target/gs-messaging-jms.jar
ثم
java -jar ./target/gs-messaging-jms.jar
لتنفيذ البرنامج. يجب أن ترى ما يلي:

يمكنك هنا معرفة كيفية وضع التطبيق للرسالة ("إرسال رسالة بريد إلكتروني") ، ثم استعادتها.
النتائج
يتيح لك استخدام Spring Boot Starter مع MQ البدء بسرعة كبيرة. بعد ذلك ، بعد بدء تشغيل التطبيق الأول ، يمكنك توسيعه لاستخدام ميزات MQ الأخرى. بعد تجربتها ، يمكنك تقديم ملاحظات هنا أو على صفحة
مشكلات GitHub .
تحديث - يونيو 2018
في وقت سابق من هذا العام ، تم إصدار تحديث رئيسي لـ Spring Boot Framework ، والمعروف باسم Boot 2. ، وتم تحديث MQ Boot Starter للعمل مع هذا الإصدار الجديد من النظام الأساسي. بالطبع ، تتوفر جميع إصدارات هذا الكود التي تم إصدارها علنًا في
مستودع Maven Central Repository . للتوافق مع Spring Boot 1 ، يجب الاستمرار في استخدام
الإصدار 0.0.4 من هذه الأداة ؛
الإصدار 2.0.0 متوافق مع Boot 2 وسيتم استخدامه كأساس لأي تحديثات مستقبلية.
به
jms ،
mq ،
mqseries ،
spring ،
spring springالمؤلف
مارك إي تايلور11 تعليقًا على مقال "تطوير تطبيقات MQ JMS على برنامج Spring Spring"
(فقط التعليقات والتعليقات المفيدة مع الإجابات المترجمة)3.
هوراسيو 16 مايو 2019
مارك ، وظيفة رائعة.
هل يمكنني التعامل مع أكثر من قائمة انتظار؟
أرى أن البادئة مشفرة فيConfigurationProperties (prefix = "bm.mq")
مارك إي تايلور 17 مايو 2019
أنا حقا لا أفهم السؤال. تشير "البادئة" إلى سمات التكوين التي تُظهر أساسًا كيفية الاتصال بمدير قائمة الانتظار. هذا لا علاقة له بقوائم الانتظار التي يستخدمها التطبيق بعد الاتصال. إذا كنت تريد حقًا السؤال عن الاتصال بمديري قوائم انتظار متعددة ، فراجع
github.com/ibm-messaging/mq-jms-spring/issues/7 لمعرفة الطرق التي يستخدمها الأشخاص.
7.
بيتر 17 مايو 2018
"Hello.Application" مفقود ، هل الملفات موجودة على جيثب؟
س مارك تايلور 12 يونيو 2018
لاستخراج تطبيق نموذج واستيراده ، استخدمت صفحة "Getting Started Spring" (راجع
spring.io/guides/gs/messaging-jms ) ، ثم
قمت بإجراء تغييرات بسيطة. لأسباب مختلفة ، لم أكن أريد عمداً الحصول على نسخة منفصلة من هذا الرمز هنا.
ترجم بواسطة
middle_java .