0 سؤال: غير قادر على بث الرسالة باستخدام الكرفس

السؤال الذي تم إنشاؤه في Wed, May 8, 2019 12:00 AM

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

يبدو اعتراف الكرفس الخاص بي كما يلي:

app.conf.task_queues = (Broadcast('broadcast_tasks'),)

app.conf.task_routes = {
  'tasks.tasks.sync_channels': {
      'queue': 'broadcast_tasks',
      'exchange': 'broadcast_tasks'
  }
}

وفيما يلي كيف حددت مهمتي في التطبيق /مهام /task.py

@app.task(name='sync_channels')
def sync_channels(data):
   logger.debug('Received here')
   pass

إليك كيفية إرسال الرسالة إلى rabbitmq باستخدام الكرفس:

from app.tasks.tasks import sync_channels
sync_channels.delay([])

عندما أقوم بفتح واجهة إدارة rabbitmq ، أستطيع أن أرى أنه يتم إنشاء تبادل fanout باسم "broadcast_tasks" ، ولكن عندما أحاول دفع رسالة إلى مهمة sync_channels ، فإنه ينشئ تلقائيًا تبادل افتراضي (مباشر) ونافذة افتراضية قائمة الانتظار المرتبطة التبادل الافتراضي ويتم دفع جميع رسائلي المستقبلية إلى مهمة sync_channels إلى التبادل الافتراضي. يبدو أنني غير قادر بطريقة ما على تهيئة ميزة البث التي يوفرها الكرفس.

فيما يلي بعض لقطات الشاشة التي قد تساعدك في فهم المشكلة:

 صفحة إدارة Rabbitmq عندما يكون الكرفس غير متصل يتم إنشاء تبادل fanout جديد يسمى broadcast_tasks عند بدء تشغيل عامل الكرفس قائمة انتظار تم إنشاؤها بواسطة كرفس ترتبط بتبادل مهام البث [! [تبادل افتراضي وقائمة انتظار تم إنشاؤها عندما أحاول نشر بعض الرسائل لمهمة sync_channels

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

شكرًا مقدمًا

    
0
0 إجابة                              0                         
وضع مصدر هنا