دليل مطور Azure Service Bus JMS 2.0

يحتوي هذا الدليل على معلومات مفصلة لمساعدتك على النجاح في الاتصال بناقل خدمة Microsoft Azure باستخدام Java Message Service (JMS) 2.0 API.

بصفتك مطور Java، إذا كنت جديدا على ناقل خدمة Azure، ففكر في قراءة المقالات التالية.

الشروع في العمل المفاهيم

نموذج برمجة Java Message Service (JMS)

نموذج برمجة Java Message Service API كما هو موضح في الأقسام التالية:

إشعار

طبقة ناقل خدمة Microsoft Azure Premium تدعم JMS 1.1 وJMS 2.0.

ناقل خدمة Microsoft Azure - المستوى القياسي يدعم وظائف JMS 1.1 المحدودة. لمزيد من التفاصيل، يرجى الرجوع إلى هذه الوثائق.

JMS - اللبنات الأساسية

الكتل البرمجية الإنشائية أدناه متاحة للتواصل مع تطبيق JMS.

إشعار

عُدِّل الدليل أدناه من برنامج Oracle Java EE 6 التعليمي لخدمة رسائل Java (JMS)

يوصى بالرجوع إلى هذا البرنامج التعليمي لفهم خدمة رسائل Java (JMS) بشكل أفضل.

مصنع التوصيل

يُستخدم كائن مصنع الاتصال من قِبل العميل للاتصال بموفر JMS. يُغلِّف مصنع الاتصال مجموعة من معلمات تكوين الاتصال التي يحددها المسؤول.

كل مصنع اتصال هو مثيل أو ConnectionFactoryQueueConnectionFactoryأو TopicConnectionFactory واجهة.

لتبسيط الاتصال مع ناقل خدمة Azure، يتم تنفيذ هذه الواجهات من خلال ServiceBusJmsConnectionFactoryأو ServiceBusJmsQueueConnectionFactoryأو ServiceBusJmsTopicConnectionFactory على التوالي.

هام

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

قم بإنشاء هوية مدارة معينة من قبل النظام على Azure، واستخدم هذه الهوية لإنشاء TokenCredential.

TokenCredential tokenCredential = new DefaultAzureCredentialBuilder().build();

يمكن بعد ذلك إنشاء مثيل لمصنع الاتصال ion باستخدام المعلمات أدناه.

  • بيانات اعتماد الرمز المميز - تمثل بيانات اعتماد قادرة على توفير رمز OAuth المميز.
  • Host - اسم المضيف لمساحة اسم الطبقة ناقل خدمة Azure Premium.
  • ServiceBusJms الاتصال ionFactory الإعدادات حقيبة الخصائص، والتي تحتوي على
    • connectIdleTimeoutMS - مهلة الاتصال الخامل بالمللي ثانية.
    • traceFrames - علم منطقي لجمع إطارات تتبع AMQP لتصحيح الأخطاء.
    • معلمات التكوين الأخرى

يمكن إنشاء المصنع كما هو موضح هنا. بيانات اعتماد الرمز المميز والمضيف معلمات مطلوبة، ولكن الخصائص الأخرى اختيارية.

String host = "<YourNamespaceName>.servicebus.windows.net";
ConnectionFactory factory = new ServiceBusJmsConnectionFactory(tokenCredential, host, null); 

وجهة JMS

الوجهة هي الكائن الذي يستخدمه العميل لتحديد هدف الرسائل المُنتَجة ومصدر الرسائل المُستهلَكة.

تعيين الوجهات للكيانات في ناقل خدمة Microsoft Azure - قوائم الانتظار (في سيناريوهات نقطة إلى نقطة) والموضوعات (في سيناريوهات pub-sub).

الاتصالات

يقوم الاتصال بتغليف اتصال افتراضي بموفر JMS. مع ناقل خدمة Azure، فإنه يمثل اتصالا ذو حالة بين التطبيق ناقل خدمة Azure عبر AMQP.

يتم إنشاء اتصال من مصنع الاتصال كما هو موضح في المثال التالي:

Connection connection = factory.createConnection();

جلسات العمل

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

يمكن إنشاء جلسة عمل من كائن الاتصال كما هو موضح في المثال التالي:

Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);

إشعار

لا تدعم واجهة برمجة تطبيقات JMS تلقي الرسائل من قوائم انتظار أو مواضيع ناقل الخدمة مع تمكين جلسات المراسلة.

أوضاع الجلسة

يمكن إنشاء جلسة باستخدام أي من الأوضاع أدناه.

أوضاع الجلسة سلوك
الجلسة. AUTO_ACKNOWLEDGE تقر الجلسة تلقائياً باستلام العميل لرسالة، إما عند عودة الجلسة بنجاح من مكالمة لتلقيها، أو عندما يستمع المستمع إلى الرسالة الذي دعت إليه الجلسة لمعالجة الرسالة بنجاح.
Session.CLIENT_ACKNOWLEDGE يقر العميل برسالة مستهلكة عن طريق استدعاء طريقة الإقرار بالرسالة.
الجلسة. DUPS_OK_ACKNOWLEDGE يرشد هذا الوضع من الإقرار الجلسة إلى الإقرار البطيء بتسليم الرسائل.
الجلسة. SESSION_TRANSACTED يمكن تمرير هذه القيمة بصفتها وسيطة للأسلوب createSession (int sessionMode) على كائن الاتصال لتحديد أن الجلسة يجب أن تستخدم معاملة محلية.

عندما لا يتم تحديد وضع جلسة العمل، يتم اختيار Session.AUTO_ACKNOWLEDGE بشكل افتراضي.

أوضاع JMSContext

إشعار

يُعرَّف JMSContext بوصفه جزءاً من مواصفات JMS 2.0.

يجمع JMSContext بين الوظائف التي يوفرها الاتصال وكائن الجلسة. يمكن إنشاؤه من كائن مصنع الاتصال.

JMSContext context = connectionFactory.createContext();

أوضاع JMSContext

تماماً مثل كائن Session، يمكن إنشاء JMSContext بأوضاع الإقرار نفسها كما هو مذكور في أوضاع الجلسة.

JMSContext context = connectionFactory.createContext(JMSContext.AUTO_ACKNOWLEDGE);

عندما لا يتم تحديد الوضع، يتم اختيار JMSContext.AUTO_ACKNOWLEDGE بشكل افتراضي.

منتجو رسائل JMS

منتج الرسالة هو كائن يُنشأ باستخدام JMSContext أو جلسة ويستخدم لإرسال الرسائل إلى وجهة ما.

يمكن إنشاؤه إما ككائن مستقل كما هو موضح في المثال التالي:

JMSProducer producer = context.createProducer();

أو يتم إنشاؤها في وقت التشغيل عند الحاجة إلى إرسال رسالة.

context.createProducer().send(destination, message);

مستهلكي رسائل JMS

مستهلك الرسالة هو كائن يُنشئه JMSContext أو جلسة ويستخدم لتلقي الرسائل المرسلة إلى وجهة ما. يمكن إنشاؤه كما هو موضح في هذا المثال:

JMSConsumer consumer = context.createConsumer(dest);

يستقبل متزامن عبر طريقة الاستلام()

يوفر مستهلك الرسائل طريقة متزامنة لتلقي الرسائل من الوجهة عبر الأسلوب receive().

في حالة عدم تحديد وسيطات/مهلة، أو تحديد مهلة "0"، يُحظر العميل إلى أجل غير مسمى ما لم تصل الرسالة أو قُطع الاتصال (أيهما أسبق).

Message m = consumer.receive();
Message m = consumer.receive(0);

عندما تُوفر وسيطة موجبة غير صفرية، يُحظر المستهلك حتى انتهاء صلاحية هذا المؤقت.

Message m = consumer.receive(1000); // time out after one second.

يتلقى غير متزامن مع مستمعي رسائل JMS

مستمع الرسائل هو كائن يستخدم للمعالجة غير المتزامنة للرسائل الموجودة على وجهة ما. يقوم بتنفيذ الواجهة MessageListener ، التي تحتوي على onMessage الأسلوب حيث يجب أن يعيش منطق العمل المحدد.

يجب إنشاء مثيل لكائن مستمع الرسائل وتسجيله مقابل مستهلك رسالة معينة باستخدام الأسلوب setMessageListener.

Listener myListener = new Listener();
consumer.setMessageListener(myListener);

تستهلك من المواضيع

يتم إنشاء مستهلكي رسائل JMS مقابل وجهة، والتي يمكن أن تكون قائمة انتظار أو موضوعا.

المستهلكون في قوائم الانتظار هم ببساطة كائنات من جانب العميل تعيش في سياق الجلسة (والاتصال) بين تطبيق العميل وناقل خدمة Microsoft Azure.

ومع ذلك، يتكون المستهلكون في الموضوعات من جزأين -

  • كائن من جانب العميل يقع في سياق الجلسة (أو JMSContext)، و،
  • اشتراك يمثل كياناً في ناقل خدمة Azure.

يتم توثيق الاشتراكات هنا ويمكن أن تكون واحدة من الاشتراكات التالية:

  • الاشتراكات المشتركة الدائمة
  • الاشتراكات المشتركة غير الدائمة
  • الاشتراكات غير المشتركة الدائمة
  • الاشتراكات غير المشتركة غير الدائمة

متصفحات قائمة انتظار JMS

توفر JMS API عنصر QueueBrowser يسمح للتطبيق بتصفح الرسائل في قائمة الانتظار وعرض قيم الرأس لكل رسالة.

يمكن إنشاء مستعرض قائمة انتظار باستخدام JMSContext كما في المثال التالي:

QueueBrowser browser = context.createBrowser(queue);

إشعار

لا توفر JMS API واجهة برمجة تطبيقات لتصفح موضوع ما.

وذلك؛ لأن الموضوع نفسه لا يخزن الرسائل. بمجرد إرسال الرسالة إلى الموضوع، يعاد توجيهها إلى الاشتراكات المناسبة.

محددات رسائل JMS

يمكن استخدام محددات الرسائل من خلال التطبيقات المستلمة لتصفية الرسائل المستلمة. باستخدام محددات الرسائل، يقوم التطبيق المستلم بإلغاء تحميل عمل تصفية الرسائل إلى موفر JMS (في هذه الحالة، ناقل خدمة Azure) بدلاً من تحمل هذه المسؤولية نفسها.

يمكن استخدام المحددات عند إنشاء أي من المستهلكين أدناه -

  • اشتراك دائم مشترك
  • اشتراك دائم غير مشترك
  • اشتراك غير دائم مشترك
  • اشتراك غير دائم غير مشترك
  • متصفح قائمة الانتظار

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

إليك كيفية ترجمة ترتيب AMQP إلى عملية ناقل خدمة Microsoft Azure:

ACCEPTED = 1; -> Complete()
REJECTED = 2; -> DeadLetter()
RELEASED = 3; (just unlock the message in service bus, will then get redelivered)
MODIFIED_FAILED = 4; -> Abandon() which increases delivery count
MODIFIED_FAILED_UNDELIVERABLE = 5; -> Defer()

الملخص

أظهر هذا الدليل للمطور كيف يمكن لتطبيقات عميل Java التي تستخدم Java Message Service (JMS) الاتصال بناقل خدمة Microsoft Azure.

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

لمزيد من المعلومات حول ناقل خدمة Azure وتفاصيل حول كيانات خدمة رسائل Java (JMS)، راجع المقالات التالية: