0 Câu hỏi: Không thể truyền phát tin nhắn bằng cần tây

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

Tôi đang cố gắng sử dụng bản dựng của cần tây để hỗ trợ định tuyến phát sóng bằng cách sử dụng Phát sóng và sử dụng rabbitmq làm nhà môi giới. Tôi đã có thể xuất bản và nhận tin nhắn thành công bằng cách sử dụng trao đổi trực tiếp mặc định, bây giờ tôi đang cố gắng sử dụng trao đổi fanout mà rabbitmq cung cấp. Đối với điều này, có vẻ như cần tây có hỗ trợ tích hợp sử dụng lớp Broadcast.

Cây cần tây của tôi trông như thế này:

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

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

Và sau đây là cách tôi đã xác định nhiệm vụ của mình trong ứng dụng /nhiệm vụ /nhiệm vụ

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

Đây là cách tôi đẩy tin nhắn đến rabbitmq bằng cách sử dụng cần tây:

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

Khi tôi mở giao diện người dùng quản lý rabbitmq, tôi có thể thấy rằng một trao đổi fanout được tạo với tên "Broadcast_t Nhiệm vụ", nhưng khi tôi cố gắng đẩy một thông báo đến tác vụ sync_channels, nó sẽ tự động tạo ra một trao đổi mặc định (trực tiếp) và mặc định hàng đợi liên kết với trao đổi mặc định và tất cả các tin nhắn trong tương lai của tôi với tác vụ sync_channels được đẩy sang trao đổi mặc định. Có vẻ như bằng cách nào đó tôi không thể định cấu hình tính năng Phát sóng mà cần tây cung cấp.

Dưới đây là một số ảnh chụp màn hình có thể giúp bạn hiểu vấn đề:

 Trang quản lý Rabbitmq khi cần tây không được kết nối Một trao đổi fanout mới có tên Broadcast_t Nhiệm vụ được tạo khi tôi khởi động công nhân cần tây Hàng đợi được tạo bởi cần tây liên kết với trao đổi Broadcast_t Nhiệm [! [Một trao đổi mặc định và hàng đợi được tạo khi tôi cố gắng xuất bản một số thông báo cho tác vụ sync_channels

Tôi cũng cần một số hiểu biết về cách thức hoạt động của Broadcast celery. Ngoài ra, thay vì sử dụng tính năng Phát sóng, tôi đã thử tạo trao đổi fanout, nhưng tôi đã vật lộn trong việc ràng buộc một hàng đợi với trao đổi đó và sau đó xuất bản tin nhắn. Bất kỳ trợ giúp hoặc bất kỳ ví dụ nào về cách thực hiện sẽ hữu ích cho tôi.

Cảm ơn trước

    
0
0 Câu trả lời                              0                         
nguồn đặt đây