سؤال

خلفية

لديّ خدمتان تحتاج إلى التواصل مع بعضهما البعض عبر قائمة انتظار الرسائل. إحداها هي خدمة قديمة مكتوبة في PHP والآخر في Java. عاجلاً وليس آجلاً ، سيتم إعادة كتابة خدمة PHP في Java. الطريقة الحالية التي يتواصلون مع بعضهم البعض هي الكتابة إلى قاعدة بيانات مشتركة ، والتي استطلاعات الخدمة الأخرى. هذا ما أحاول الابتعاد عنه واستبداله بقائمة انتظار رسالة.

مشكلة

التواصل الذي أعمل عليه الآن هو من خدمة PHP إلى خدمة Java. يجب أن ترسل كائنًا معقدًا نسبيًا (السلاسل والأعداد الصحيحة والقوائم والخرائط من الأوتار والأعداد الصحيحة). من الناحية المثالية ، سيكون الحل عمليًا في PHP ومثالية في Java ، لأن ذلك سيكون إرث هذا المشروع.

الحلول الممكنة

    1.
هل كانت مفيدة؟

المحلول

الحل الذي توصلت إليه هو enqueue من php/stomp باستخدام jms-json-object تحويل. الرسائل مصنوعة خصيصًا JSON بحيث يتم إلغاؤها في Java باستخدام readObject, ، يمكن إعادة بنائها إلى كائن كامل باستخدام Xstream. يحدث هذا إعادة الإعمار الداخلي ل ActiveMq وعلي فقط أن أتأكد من أن الضرورة اسماء مستعارة و المحولات في المكان المناسب. عندما نستبدل مكون PHP أخيرًا Java ، فإن إرسال رسالة سيكون مجرد مسألة استخدام writeObject.

نصائح أخرى

هناك عميل Stomp لـ PHP ،

http://pecl.php.net/package/stomp

في رأيي ، يجب أن تبقي تفاعلات المكون خالية من تطبيقات محددة. ActiveMQ هو عربات التي تجرها الدواب والعديد من الأنظمة التي أزلتها لصالح RabbitMQ أو Sun OpenMQ. يجب عليك تجنب ترميز إجراءات "إرسال الرسائل" في PHP ، وإنشاء "SendMessage" Servlet بدلاً من ذلك ، واستخدام Curl لنشر رسالة مشفرة JSON. سيستخدم Servlet بعد ذلك مصنع الاتصال وما إلى ذلك. مع القليل من النفقات العامة ، ستقوم بتحرير مكون PHP من أي رمز محدد MQ-Server. يمكنك استخدام TextMessage مع تحميل Json'ed ، وترميزه وفك تشفيره بسهولة مع جاكسون.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top