# جاكرتا للمراسلة

إن واجهة برمجة تطبيقات «جاكرتا للمراسلة (كانت تُسمى سابقًا» خدمة رسائل جافا«أو»JMS API«) هي واجهة برمجة تطبيقات» (API) جافا للبرامج الوسيطة الموجهة إلى الرسائل. توفّر الواجهة نماذج مراسلة عامة قادرة على التعامل مع المشكلات بين المنتِج والمستهلك، ويمكن استخدامها في تسهيل إرسال واستلام الرسائل بين أنظمة البرمجيات. إن واجهة جاكرتا للمراسلة هي جزء من Jakarta EE، وكانت تُعرّف في الأصل بأنها خاصية تم تطويرها في شركة «صن مايكروسيستمز» (Sun Microsystems)، قبل أن تتولى «عملية مجتمع جافا» مهمة توجيهها.

## فكرة عامة عن المراسلة

إن المراسلة هي شكل من أشكال التواصل المُوزّع المرتبط بشكل غير مُحكَم (loosely coupled)، ويُعرّف مصطلح «التواصل» في هذا السياق بأنه تبادل الرسائل بين مكونات البرامج. تحاول التقنيات الموجهة للرسائل تخفيف قيود التواصل «المرتبط بإحكام» (Tightly coupled) (مثل منافذ شبكة TCP، أو CORBA أو RMI)، وذلك عن طريق تقديم عنصر وسيط. تسمح هذه الطريقة لمكونات البرامج بالتواصل مع بعضها بشكل غير مباشر، وتتضمن المزايا الناتجة عن ذلك عدم احتياج مُرسلين الرسائل لامتلاك معلومات دقيقة عن مَن يتلقون الرسائل.
تتضمن مزايا المراسلة القدرة على دمج منصات متباينة، وتقليل قيود النظام، وزيادة وتوسيع حجمه، والاستجابة للتغيير بسرعة أكبر.

### تاريخ النسخة

* JMS 1.0
* JMS 1.0.1 في (5 أكتوبر 1998)
* JMS 1.0.1a في (30 أكتوبر 1998)
* JMS 1.0.2 في (17 ديسمبر 1999)
* JMS 1.0.2a في (23 ديسمبر 1999)
* JMS 1.0.2b في (27 أغسطس 2001)
* JMS 1.1 في (12 أبريل 2002)
* JMS 2.0 في (21 مايو 2013)
* JMS 2.0a في (16 مارس 2015)
إن النسخة JMS 2.0 هي النسخة الحالية التي توفرها «عملية مجتمع جافا» تحت عنوان JSR 343.
النسخة JMS 3.0 في مرحلة التطوير المبكر كجزء من Jakarta EE.

## العناصر

فيما يلي عناصر JMS:
مُزوّد JMS تطبيق لواجهة JMS في «برنامج وسيط موجه للرسائل» (MOM)، ويُطبّق المزود إما كتطبيق لـ JSM جافا أو كمُحوّل لـ MOM بدون جافا. عميل JMS تطبيق أو عملية ينتج و/أو يستقبل الرسائل. مُنتِج/ناشر JMS عميل JMS الذي يُنشئ الرسائل ويرسلها. مستهلك/مشترك JMS عميل JMS الذي يتلقى الرسائل رسالة JMS الكائن الذي يحتوي على البيانات المُنقولة بين عملاء JMS. طابور JMS نقطة تجمُع تحتوي على الرسائل التي أُرسلت وبانتظار القراءة (بواسطة مستهلك واحد)، وكما يوحي اسم «طابور»، فإن الرسائل تُوصّل وفقًا لترتيب إرسالها، ويضمن طابور JMS أن كل رسالة يتم معالجتها مرة واحدة فقط. موضوع JMS آلية توزيع لنشر الرسائل التي يتم توصيلها لعدّة مشتركين.

## النماذج

إن واجهة برمجة تطبيقات JMS (أو JMS API) تدعم نموذجين مختلفين:
* نموذج المرور من نقطة إلى نقطة
* نموذج النشر والمشاركة

### نموذج المرور من نقطة إلى نقطة

في ظل نظام المراسلة من نقطة إلى نقطة، يتم توجيه الرسائل إلى المستهلكين الفرديين الذين لديهم طوابير من الرسائل الواردة. إن هذا النوع من المراسلة قائم على مفهم «طوابير الرسائل»، والمرسلين والمستلمين، حيث كل رسالة تُوجّه إلى طابور محدد، ويستخلص العملاء المستلمين لها الرسائل من الطوابير الموضوعة للاحتفاظ برسائلهم. يستطيع أي عدد من المنتجين إرسال رسائل إلى الطابور، ولكن يضمن النظام توصيل كل رسالة لمستهلك واحد فقط. تحتفظ الطوابير بجميع الرسائل المرسلة إليها حتى يتم استهلاك جميع الرسائل أو تنتهي صلاحيتها. إذا لم يُسجّل أي مستهلكين لاستهلاك الرسائل، يحتفظ بهم الطابور حتى يسجّل مستهلك لاستهلاكهم.

### نموذج النشر والاشتراك

إن نموذج «النشر والاشتراك» يدعم نشر الرسائل حول «موضوع» مراسلة معين. يستطيع «المشتركون» تسجيل اهتمامهم بتلقي الرسائل «المنشورة» حول موضوع مراسلة معين. لا يعرف الناشر ولا المشترك بعضهما في هذا النموذج، الأمر أشبه بلوحة إعلانات تحافظ على هوية المعلنين فيها، حيث:
* سيتلقى عدد من المستهلكين الرسائل أو قد لا يتلقاها أي مستهلكين على الإطلاق.
* يوجد اعتمادية مرتبطة بالتوقيت بين الناشرين والمشتركين. يجب على الناشر إنشاء موضوع رسالة يشترك فيه العملاء، ويجب على المشترك أن يظل نشطًا باستمرار لتلقي الرسائل، ما لم يكن سجّل في اشتراك دائم. في تلك الحالة، الرسائل المنشورة أثناء عدم اتصال المشترك سيتم إعادة توزيعها عندما يتصل بالشبكة.
تُوفّر JMS طريقة لفصل التطبيق عن طبقة النقل الخاصة بتزويد البيانات. ويمكن استخدام نفس فئات جافا في التواصل مع مزودين JMS المختلفين عن طريق استخدام معلومات «واجهة تسمية ودليل جافا» (JNDI) في المُزوّد المرغوب. تستخدم الفئات في البداية «مصنع ارتباط» للاتصال بالطابور أو الموضوع، ثم تستخدم أمر تأهيل وإرسال الرسائل أو نشرها. أما من ناحية المستلمين، فيستلم العميل الرسالة أو يشترك في خاصية تلقي الرسائل.

## مخطط «واجهة تجربة المستخدم» (URI)

يُعرّف RFC 6167 واجهة تطبيقات JMS بأنها: مخطط URI لخدمة رسائل جافا.

## تطبيقات المزود

إذا أرد شخص ما استخدام JMS، يجب أن يكون لديه مزوّد JMS يستطيع إدارة الجلسات والطوابير والمواضيع. وأصبح من الضروري تضمين مزود JMS في جمع خوادم تطبيق Java EE بدايةً من نسخة Java EE رقم 1.4. يمكن تطبيق هذا باستخدام إدارة تدفق الرسائل الواردة في «معمارية موصّل Java EE»، والتي أصبحت متاحة لأول مرة في هذه النسخة. تضم القائمة التالية بعض من مزوّدي JMS ذوي الشعبية:
* مكتبة Java Messaging الخاصة بـ Amazon SQS
* Apache ActiveMQ
* ApacheQpid الذي يستخدم AMQP
* IBM MQ (MQSeries سابقًا و WebSphere MQ لاحقًا)
* IBM WebSphere Application Server's Service Integration Bus (SIBus)