سؤال

لدي العديد من الخوادم التي تنتج ملفات xml من الثعبان بعض الملقمات الأخرى التي تستهلك تلك xmls باستخدام جافا.لقد بدا مؤخرا في الدائرة ، شكرا وقررت في محاولة استخدامه لتمرير ملفات xml.

حتى أقوم بإعداد شكرا الشياطين على المستهلك خوادم فكرت في تنفيذ بعض الدراجات الأسلوب على وتنتج توزيع xmls بالتساوي على المستهلكين.

Python  -----------------------------> ActiveMQ ---> Java
        \                           /
         \                         /
          ---------------------------> ActiveMQ ---> Java
                                 /  /
Python  ----------------------------

لاختبار, ركضت واحدة منتج واحد الاستهلاكية ونظرت إلى النتائج.

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

Python  -----------------------------> ActiveMQ ---> Java (work)
                                          |
                                          |
                                       ActiveMQ (xmls piling up)

تحرير:ليس هذا ما حدث فعلا, آسف.انظر أدناه لمزيد من التفاصيل

الآن, أنا لا أتذمر لأن هذا هو ما أريد على أي حال, ولكن أنا مرتبك قليلا:ما هي الطريقة المناسبة لتنفيذ هذا كثير إلى كثير من انتظار أنا بعد ؟

وينبغي إعداد شكرا الشياطين على منتجي آلات كذلك ، وإرسال xmls إلى localhost ActiveMQs والثقة الاكتشاف التلقائي للحصول على xmls إلى المستهلكين ؟

Python ---> ActiveMQ ------------------------------ ActiveMQ ---> Java
                |                                      |
                |                                      |
                |                                -- ActiveMQ ---> Java
                |                               |  
Python ---> ActiveMQ----------------------------

يجب أن العصا إلى بلدي الأصلي خطة دورة الرسائل عبر آلات المستهلك فقط أن تكون آمنة ؟

أم أن هناك API: هذا إخفاء هذه التفاصيل من العمليات ؟

راجع للشغل, المنتجين الثعبان العمليات باستخدام ستومب و المستهلكين جافا باستخدام الدائرة.

أعتذر إذا عينيك في إيذاء من كربي الفن ASCII, لم أكن متأكدا إذا أنا أكون واضحا بما فيه الكفاية مع مجرد كلمات.

تحرير

على ما يبدو عندما كنت تشغيل "واحدة منتج واحد الاستهلاكية" لم ألاحظ أن البعض المستهلكين التشغيل بالفعل.كانوا فقط لا تفعل أي شيء مفيد مع xmls انهم معالجتها.لهذا كنت أرى النتائج الجزئية.

بعد قراءة أكثر قليلا و تجريب قليلا اكتشفت التالية:

افتراضي شكرا صناعة السيارات في اكتشاف أخرى شكرا الحالات على الشبكة المحلية و إنشاء مخزن وإلى الأمام شبكة من السماسرة.وهذا يعني أن المنتج يمكن بعد xmls إلى أي شكرا مثيل وأنها سوف تجد طريقها إلى المستهلكين الاستماع على الآخرين شكرا الحالات على نفس الشبكة.

علما أن وثائق تدعي أن الاكتشاف التلقائي لا ينصح لإنتاج الاجهزة.

الجواب المقبول أدناه لا يزال صحيحا ، على الرغم من.أبسط طريقة لاستخدام شكرا هو مجرد استخدام واحد أو اثنين من الخوادم باسم "طابور خوادم".ومع ذلك اخترت أن تذهب مع بلدي الأصلي خطة لأنني أعتقد فإنه سيتم تقليل حركة مرور شبكة الاتصال (مع منتصف الخادم ، xmls إلى ذلك و من ذلك مرة أخرى).

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

المحلول

Itsadok أعتقد أنك ربما لا تفكر في استخدام الرسائل بشكل صحيح.

وجود أمي سبيل المثال (سواء شكرا, RabbitMQ أو أي أمي وسيط) على واحد لكل المستهلك الحالة لا معنى له من الناحية النظرية.بل الأفضل أن تفكر في أمك وسيط كجهاز توجيه الرسائل.

في هذه الحالة سيكون لديك واحد شكرا وسيط سبيل المثال (التي قد تكون sharded أو تحجيم إذا كان لديك زيادة المشاكل ، أو تكرارها إذا كان لديك ها الاعتبارات) جميع المنتجين وجميع المستهلكين للاتصال.ثم كل XML يذهب إلى نفس الوسيط سبيل المثال ، جميع المستهلكين قراءة من نفس الوسيط سبيل المثال.في هذه الحالة وسيط تحديد المستهلك الرسالة يجب أن تذهب إلى تستند إلى أي الاستدلال فإنه يستخدم.

وهذا يعني أيضا أنه يمكنك إضافة وإزالة المنتجين والمستهلكين بشكل حيوي, و لم يتغير شيء:كلهم الاتصال إلى نفس السماسرة ، حتى تتمكن من إضافة وإزالة المنتجين والمستهلكين الخاص بك تغييرات الحمل أو تفشل النظم.

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