ActiveMq Publisher and Cumper بلغات متعددة (C ++ Java)
سؤال
أرغب في استخدام 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.