سؤال

أقوم بالتحقيق في استخدام ActiveMQ كقائمة انتظار الرسائل غير المدمجة في التطبيق في التطبيق الخاص بي، لكنني عالقة بعض الشيء حول كيفية بدء تشغيل مثل هذا التطبيق. أنا أتصور ذلك مثل (pseudocode، بالطبع):

configureBroker ()
broker.start ()

createProducer (broker)
producer.start ()

for each desired consumer
    createConsumer (broker)
    consumer.start ()

waitForSignal ()
signalProducerShutdown ()

waitForEmptyQueues ()
signalConsumerShutdown ()

broker.stop ()

لقد حاولت تجميع نسخة بسيطة من هذا، لكنني عالقة حول كيفية كتابة المنتجين والمستهلكين بطريقة تجعلهم يعملون إلى الأبد، أو حتى يخبروا إنهاء. ما هي أفضل طريقة للقيام بذلك؟ أنا أتحدث على وجه التحديد حول جانب الخيوط؛ ما الذي أحتاجه / أرغب في تفرخه في موضوعه الخاص به، إلخ ...

أنا جديد تماما على طلبيات قائمة انتظار الرسائل، لذا يرجى أن تكون مطعما مع الأمثلة الخاصة بك.

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

المحلول

عند تحديد ActiveMQConnectionSactory، يمكنك تحديد "VM: //" حيث الاسم هو الاسم المحدد Intra-VM لسمسوبك وسوف تبدأ الوسيط داخل VM.

علي سبيل المثال،

String broker = "vm://stackOverflowTest";
ActiveMQConnectionFactory connectionFactory = 
        new ActiveMQConnectionFactory(broker);
Connection amqcon = connectionFactory.createConnection();
amqcon.start();

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

يسمح هذا الحل فقط بالاتصال مع VM، فإنه لا يفتح أي منافذ خارجية. أفترض أن هذا هو ما كنت تبحث عنه لأنك قلت أنك تريد طوابير مضمنة ومتنوعة في العملية.

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