سؤال

أرغب في استخدام ActiveMQ كوسيط رسائل يتواصل بين مكون C ++ ومكون Java في عمليتين. على سبيل المثال. مكون C ++ هو الناشر ومكون Java هو المشترك (ربما هناك مشتركين متعددين). أنظر إلى موقع ActiveMQ ويذكر الأداة OpenWire و ActiveMQ-CPP. ومع ذلك ، فإن جميع الأمثلة على مواقع الويب تستخدم نفس اللغة لكل من المنتج والمستهلك.

أسئلتي هي:

1. هل يمكن أن تعمل ActiveMQ للمنتج/المستهلك بلغات مختلفة؟

2. في عمليات مختلفة؟ كيف؟

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

المحلول

OpenWire هو بروتوكول ، وبالتالي يمكن تنفيذ نظريًا في أي مكان ، لكن هذا لا يعني وجود تطبيقات كاملة لكل لغة. تقول الطباعة الدقيقة لعميل C ++:

"اعتبارًا من الإصدار 2.0 ، يدعم ActiveMQ -CPP بروتوكول OpenWire V2 ، مع استثناءات قليلة. ObjectMessage - لا يمكننا إعادة بناء الكائنات (الكائنات) الواردة في كائن في C ++ ، لذلك إذا كان تطبيقك مشتركًا في قائمة انتظار أو موضوع كائن تم إرساله إليه ، ستتلقى الرسالة ولكن لن تتمكن من استخراج كائن منه. "

لذلك إذا كنت ترغب في إرسال البيانات عبر العمليات ، فأنت تكتب مكونات C ++ و Java لاستخدام API (مع التأكد من عدم استخدام أنواع ObjectMessage إذا كنت تستخدم ActiveMQ-CPP). ثم قم بتشغيل خادم ActiveMQ ... أخبر برامجك بالاتصال به ، ويجب أن يعمل.

ولكن إذا كنت تحاول حقًا القيام بالاتصال بين العميل عند التحكم في كلا العملاء ، فقد يكون ذلك ثقيلًا بعض الشيء. قد تكون مهتمًا بالردود على ما هو أفضل طريقة لـ IPC بين Java و C ++؟ و بديل جيد لتطبيقات IPC الذاكرة المشتركة لتطبيقات Java/C ++ على Linux

نصائح أخرى

مباشرة من الصفحة الأولى لـ ActiveMQ:

Supports a variety of Cross Language Clients and Protocols from Java, C, C++, C#, Ruby, Perl, Python, PHP

* OpenWire for high performance clients in Java, C, C++, C#
* Stomp support so that clients can be written easily in C, Ruby, Perl,
  Python, PHP, ActionScript/Flash, Smalltalk to talk to ActiveMQ as well 
  as any other popular Message Broker

لقد اختبرناها مع PHP (باستخدام STOMP) و Java (باستخدام OpenWire).

فيما يتعلق بالعمليات: يمكن أن يكون مختلف المنتجين والمستهلكين بالطبع في عمليات مختلفة تمامًا ، حيث يتواصلون على مثل TCP أو SSL.

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