0 Pytanie: Nie można wysyłać wiadomości przy użyciu selera

pytanie utworzone w Wed, May 8, 2019 12:00 AM

Próbuję użyć kompilacji selera do obsługi routingu rozgłoszeniowego, używając Broadcast i używając rabbitmq jako brokera. Udało mi się pomyślnie opublikować i odebrać wiadomość przy użyciu domyślnej wymiany bezpośredniej, teraz próbuję użyć wymiany fanout, którą zapewnia rabbitmq. W tym celu seler ma wbudowaną obsługę klasy Broadcast.

Moja konfitura selera wygląda jak to:

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

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

A oto jak zdefiniowałem moje zadanie w app /tasks /tasks.py

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

Oto jak pcham wiadomość do rabbitmq używając selera:

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

Kiedy otwieram interfejs zarządzania rabbitmq, widzę, że tworzona jest giełda fanout o nazwie „broadcast_tasks”, ale kiedy próbuję przesłać wiadomość do zadania sync_channels, automatycznie tworzy domyślną (bezpośrednią) wymianę i domyślną kolejka powiązana z domyślną wymianą i wszystkie moje przyszłe wiadomości do zadania sync_channels są przesyłane do domyślnej wymiany. Wygląda na to, że nie jestem w stanie skonfigurować funkcji transmisji, którą zapewnia seler.

Poniżej znajdują się zrzuty ekranu, które mogą pomóc w zrozumieniu problemu:

 Strona zarządzania Rabbitmq, gdy seler nie jest połączony Nowa giełda fanoutów o nazwie broadcast_tasks jest tworzona, gdy uruchamiam program selerowy Kolejka utworzona przez selera, która wiąże się z wymianą broadcast_tasks [! [Domyślna giełda i kolejka utworzone podczas próby opublikowania wiadomości do zadania sync_channels

Potrzebuję także pewnej wiedzy na temat działania Broadcastu selera. Również zamiast korzystać z funkcji transmisji próbowałem stworzyć wymianę fanoutów, ale walczyłem w związaniu kolejki z tą wymianą, a następnie opublikowaniu wiadomości. Każda pomoc lub przykład, jak to zrobić, będzie dla mnie przydatny.

Z góry dziękuję

    
0
0 Answers                              0                         
źródło umieszczone tutaj