ترحيل تطبيقات خدمة رسائل Java 2.0 (JMS) الحالية من Apache ActiveMQ إلى ناقل خدمة Microsoft Azure | Microsoft Docs

تتناول هذه المقالة كيفية تعديل تطبيق خدمة رسائل Java 2.0 (JMS) موجود يتفاعل مع وسيط JMS للتفاعل مع ناقل خدمة Microsoft Azure بدلًا من ذلك. تُغطي المقالة، على وجه الخصوص، الترحيل من Apache ActiveMQ أو Amazon MQ.

يدعم ناقل خدمة Microsoft Azure نظام Java 2 الأساسي، وإصدارات المؤسسات، وأحمال العمل Spring التي تستخدم واجهة برمجة تطبيقات JMS 2.0 عبر بروتوكول مُتقدم لوضع الرسائل في قائمة انتظار (AMQP).

قبل أن تبدأ

الاختلافات بين Apache ActiveMQ وناقل خدمة Microsoft Azure

Apache ActiveMQ وناقل خدمة Microsoft Azure كلاهما وسطاء للرسائل، ويعملان كمُوفري خدمة رسائل Java لتطبيقات العميل لإرسال الرسائل إليها واستلام الرسائل منها. كلاهما يُمكّن دلالات نقطة إلى نقطة مع قوائم الانتظار، ودلالات النشر-الاشتراك مع الموضوعات والاشتراكات.

ومع ذلك، هناك بعض الاختلافات بين الاثنين، كما يُظهر الجدول التالي:

فئة ActiveMQ ناقل خدمة Azure
مستويات التطبيق متجانسة بنظام مجموعة من طبقتين
(بوابة + نهاية خلفية)
دعم البروتوكول
  • AMQP
  • ستومب
  • OpenWire
AMQP
وضع تزويد الخدمة
  • البنية التحتية كخدمة (IaaS)، في أماكن العمل
  • Amazon MQ (النظام الأساسي المدار كخدمة)
النظام الأساسي كخدمة المُدار (PaaS)
حجم الرسالة ممكن تكوينه للعميل 100 ميغابايت (المستوى المميز)
التوافر العالي - يديره العميل النظام الأساسي المُدار
التعافي من الكوارث - يديره العميل النظام الأساسي المُدار

الميزات المدعومة وغير المدعومة

يسرد الجدول التالي ميزات خدمة رسائل Java (JMS) التي يدعمها ناقل خدمة Azure حالياً. كما يعرض الميزات غير المدعومة.

الميزة API الحالة
الصفوف
  • JMSContext.createQueue( String queueName)
دعم
المواضيع
  • JMSContext.createTopic( String topicName)
دعم
قوائم انتظار مؤقتة
  • JMSContext.createTemporaryQueue()
دعم
مواضيع مؤقتة
  • JMSContext.createTemporaryTopic()
دعم
منتج الرسائل /
JMSProducer
  • JMSContext.createProducer()
دعم
متصفحات قائمة الانتظار
  • JMSContext.createBrowser(Queue queue)
  • JMSContext.createBrowser(Queue queue, String messageSelector)
دعم
مستهلك الرسالة/
JMSConsumer
  • JMSContext.createConsumer( وجهة الوجهة)
  • JMSContext.createConsumer( وجهة الوجهة، String messageSelector)
  • JMSContext.createConsumer( Destination destination, String messageSelector, boolean noLocal)

noLocal غير معتمد حالياً
دعم
الاشتراكات المشتركة الدائمة
  • JMSContext.createSharedDurableConsumer(Topic topic, String name)
  • JMSContext.createSharedDurableConsumer(Topic topic, String name, String messageSelector)
دعم
الاشتراكات غير المشتركة الدائمة
  • JMSContext.createDurableConsumer(Topic topic, String name)
  • createDurableConsumer(Topic topic, String name, String messageSelector, boolean noLocal)

noLocal غير مدعوم حالياً ويجب تعيينه إلى "false"
دعم
الاشتراكات المشتركة غير الدائمة
  • JMSContext.createSharedConsumer(Topic topic, String sharedSubscriptionName)
  • JMSContext.createSharedConsumer(Topic topic, String sharedSubscriptionName, String messageSelector)
دعم
الاشتراكات غير المشتركة غير الدائمة
  • JMSContext.createConsumer(الوجهة الوجهة)
  • JMSContext.createConsumer( وجهة الوجهة، String messageSelector)
  • JMSContext.createConsumer( Destination, String messageSelector, boolean noLocal)

noLocal غير مدعوم حالياً ويجب تعيينه إلى "false"
دعم
محددات الرسائل يعتمد على المستهلك الذي تم إنشاؤه دعم
تأخير التسليم (الرسائل المجدولة)
  • JMSProducer.setDeliveryDelay(long deliveryDelay)
دعم
تم إنشاء الرسالة
  • JMSContext.createMessage()
  • JMSContext.createBytesMessage()
  • JMSContext.createMapMessage()
  • JMSContext.createObjectMessage( كائن قابل للتسلسل)
  • JMSContext.createStreamMessage()
  • JMSContext.createTextMessage()
  • JMSContext.createTextMessage( نص السلسلة)
دعم
المعاملات عبر الكيانات
  • الاتصال ion.createSession(true, Session.SESSION_TRANSACTED)
دعم
معاملات موزعة غير مدعوم

الاعتبارات

طبيعة ناقل خدمة Microsoft Azure ذات المستويين تُوفر إمكانيات مختلفة لاستمرارية العمل (قابلية وصول عالية والتعافي من الكوارث). ومع ذلك، هناك بعض الاعتبارات عند استخدام ميزات خدمة رسائل Java.

ترقيات الخدمة

في حالة ترقيات ناقل الخدمة وإعادة تشغيله، تُحذف قوائم الانتظار المؤقتة أو الموضوعات المؤقتة. إذا كان تطبيقك حساسًا لفقدان البيانات في قوائم الانتظار المؤقتة أو الموضوعات المؤقتة، فلا تستخدم قوائم انتظار مؤقتة أو موضوعات مؤقتة. استخدم قوائم انتظار وموضوعات واشتراكات دائمة بدلًا من ذلك.

ترحيل البيانات

كجزء من ترحيل تطبيقات العميل وتعديلها للتفاعل مع ناقل خدمة Microsoft Azure، لا تُرحل البيانات الموجودة في ActiveMQ إلى ناقل خدمة Microsoft Azure. قد تحتاج إلى تطبيق مُخصص لتعيين قوائم انتظار ActiveMQ والموضوعات والاشتراكات، ثم إعادة إرسال الرسائل إلى قوائم الانتظار والموضوعات والاشتراكات في ناقل خدمة Microsoft Azure.

المصادقة والتخويل

يعد التحكم في الوصول المستند إلى الدور في Azure (Azure RBAC)، المدعوم بمعرف Microsoft Entra، آلية المصادقة المفضلة لناقل خدمة Microsoft Azure. لتمكين التحكم في الوصول المستند إلى الدور، يرجى اتباع الخطوات الواردة في دليل مطور ناقل خدمة Azure JMS 2.0.

ما قبل الترحيل

التحقق من الإصدار

يمكنك استخدام المكونات والإصدارات التالية أثناء كتابة تطبيقات خدمة رسائل Java:

المكون ‏‏الإصدار‬
واجهة برمجة تطبيقات خدمة رسائل Java (JMS) 1.1 أو إصدار أحدث
بروتوكول AMQP 1.0

تأكد أن منافذ AMQP مفتوحة

ناقل خدمة Microsoft Azure يدعم الاتصال عبر بروتوكول AMQP. لهذا الغرض، قم بتمكين الاتصال عبر المنافذ 5671 (AMQP)، و443 (TCP). اعتمادًا على مكان استضافة تطبيقات العميل، قد تحتاج إلى تذكرة دعم للسماح بالاتصال عبر هذه المنافذ.

هام

ناقل خدمة Microsoft Azure لا يدعم إلا بروتوكول AMQP 1.0.

إعداد تكوينات المؤسسة

ناقل خدمة Microsoft Azure يُمكن مختلف ميزات أمن المؤسسة وقابلية وصول عالية. لمزيد من المعلومات، راجع:

المراقبة والتنبيهات والتتبع

لكل مساحة اسم ناقل خدمة Microsoft Azure، يمكنك نشر المقاييس على مراقبة Azure. يمكنك استخدام هذه المقاييس للتنبيه والتحجيم الديناميكي للموارد المُخصصة لمساحة الاسم.

لمزيد من المعلومات حول المقاييس المختلفة وكيفية إعداد التنبيهات عليها، راجع مقاييس ناقل خدمة Microsoft Azure في مراقبة Azure. يمكنك أيضًا معرفة المزيد حول تتبع جانب العميل لعمليات البيانات، وتسجيل تشخيصي/تشغيلي لعمليات الإدارة.

المقاييس - New Relic

يمكنك ربط المقاييس من خريطة ActiveMQ بالمقاييس في ناقل خدمة Microsoft Azure. إليك ما يلي من موقع New Relic:

إشعار

حاليًا، لا يتمتع New Relic بالتكامل المباشر السلس مع ActiveMQ، ولكن لديهم مقاييس متاحة لـ Amazon MQ. نظرًا لأن Amazon MQ مُشتق من ActiveMQ، فإن الجدول التالي يُوضح مقاييس New Relic من Amazon MQ إلى ناقل خدمة Microsoft Azure.

تجميع القياس قياس Amazon MQ/ActiveMQ قياس ناقل خدمة Microsoft Azure
الوسيط CpuUtilization CPUXNS
الوسيط MemoryUsage WSXNS
الوسيط CurrentConnectionsCount activeConnections
الوسيط EstablishedConnectionsCount activeConnections + connectionsClosed
الوسيط InactiveDurableTopicSubscribersCount استخدام مقاييس الاشتراك
الوسيط TotalMessageCount استخدام قائمة الانتظار/ الموضوع/مستوى الاشتراك activeMessages
قائمة الانتظار/الموضوع EnqueueCount incomingMessages
قائمة الانتظار/الموضوع DequeueCount outgoingMessages
الصف QueueSize sizeBytes

الترحيل

لترحيل تطبيق JMS 2.0 الموجود لديك للتفاعل مع ناقل خدمة Microsoft Azure، اتبع الخطوات الواردة في الأقسام العديدة التالية.

تصدير المخطط من ActiveMQ وإنشاء الكيانات في ناقل خدمة Microsoft Azure (اختياري)

لضمان أن تطبيقات العميل يمكنها الاتصال بسهولة بناقل خدمة Microsoft Azure، قم بترحيل المخطط (بما في ذلك قوائم الانتظار والمواضيع والاشتراكات) من Apache ActiveMQ إلى ناقل خدمة Microsoft Azure.

إشعار

بالنسبة لتطبيقات خدمة رسائل Java، يمكنك إنشاء قوائم الانتظار والمواضيع والاشتراكات كعمليات وقت التشغيل. يمنحك معظم مُوفري خدمة رسائل Java (وسطاء الرسائل) القدرة على إنشاء هذه في وقت التشغيل. لهذا السبب تعتبر خطوة التصدير هذه اختيارية. لضمان أن تطبيقك لديه الأذونات لإنشاء المخطط في وقت التشغيل، استخدم سلسلة الاتصال مع أذونات Manage SAS.

للقيام بذلك:

  1. استخدم أدوات سطر الأوامر ActiveMQ لتصدير المخطط.
  2. أعد إنشاء نفس المخطط باستخدام قالب إدارة موارد Azure.
  3. تشغيل قالب إدارة موارد Azure.

استيراد تبعية maven لتنفيذ خدمة رسائل Java لناقل خدمة Microsoft Azure

لضمان سهولة الاتصال مع ناقل خدمة Microsoft Azure، أضف حزمة azure-servicebus-jms كتبعية إلى ملف pom.xmlMaven كما يلي:

<dependencies>
...
    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>azure-servicebus-jms</artifactId>
    </dependency>
...
</dependencies>

تغييرات تكوين خادم التطبيق

خُصص هذا الجزء إلى خادم التطبيق الذي يستضيف تطبيقات العميل المتصلة بـ ActiveMQ.

تطبيقات Spring

حدّث ملف application.properties

إذا كنت تستخدم تطبيق Spring Boot للاتصال بـ ActiveMQ، يجب إزالة الخصائص الخاصة بـ ActiveMQ من الملف application.properties.

spring.activemq.broker-url=<ACTIVEMQ BROKER URL>
spring.activemq.user=<ACTIVEMQ USERNAME>
spring.activemq.password=<ACTIVEMQ PASSWORD>

ثم أضف الخصائص الخاصة بناقل خدمة Microsoft Azure إلى الملف application.properties.

azure.servicebus.connection-string=Endpoint=myEndpoint;SharedAccessKeyName=mySharedAccessKeyName;SharedAccessKey=mySharedAccessKey
استبدال ActiveMQConnectionFactory بـ ServiceBusJmsConnectionFactory

الخطوة التالية هي استبدال مثيل ActiveMQConnectionFactory بـ ServiceBusJmsConnectionFactory.

إشعار

تغييرات التعليمات البرمجية الفعلية خاصة بالتطبيق وكيفية إدارة التبعيات، ولكن العينة التالية تُوفر التوجيه حول ما يجب تغييره.

سابقًا، قد تكون أنشأت مثيل كائن ActiveMQConnectionFactory، كما يلي:


String BROKER_URL = "<URL of the hosted ActiveMQ broker>";
ConnectionFactory factory = new ActiveMQConnectionFactory(BROKER_URL);

Connection connection = factory.createConnection();
connection.start();

الآن، ستُغيّر هذا لإنشاء مثيل لكائن ServiceBusJmsConnectionFactory، كما يلي:


ServiceBusJmsConnectionFactorySettings settings = new ServiceBusJmsConnectionFactorySettings();
String SERVICE_BUS_CONNECTION_STRING = "<Service Bus Connection string>";

ConnectionFactory factory = new ServiceBusJmsConnectionFactory(SERVICE_BUS_CONNECTION_STRING, settings);

Connection connection = factory.createConnection();
connection.start();

ما بعد الترحيل

الآن بعد أن عدلت التطبيق لبدء إرسال الرسائل واستقبالها من ناقل خدمة Microsoft Azure، يجب التحقق من أنه يعمل كما تتوقع. عند الانتهاء من ذلك، يمكنك المتابعة إلى زيادة تحسين وتحديث مكدس تطبيقك.

الخطوات التالية

استخدم Spring Boot Starter لخدمة رسائل Java لناقل خدمة Microsoft Azure للتكامل السلس مع ناقل خدمة Microsoft Azure.

لمعرفة المزيد حول خدمة رسائل Java ومراسلة ناقل خدمة Microsoft Azure، راجع: