У меня есть приложение карты, которое должно показывать местоположение объектов на карте. Объекты отправляют местоположение в Rabbitmq, и я должен прочитать эти местоположения и перенаправить их веб-клиентам. Я собираюсь использовать Django каналы для реализации websochet. Я установил RabbitMQ как Django Channels Channel_layer. Мой вопрос заключается в том, как читать данные из RabbitMQ (basic_consume) и отправлять их веб-клиенту с помощью websocket.
В методе websocket co nnet, который я вызываю для метода потребления, чтобы начать потребление из rabbitMQ:
async def connect(self):
await self.accept()
await self.channel_layer.group_add("gossip", self.channel_name)
obj_rabbit_mq = RabbitMQueue()
obj_rabbit_mq.consume("my_channel")
и это потребительская часть. Я вижу часть тела в моих журналах, но та часть, которая group_send не работает.
class RabbitMQueue:
def consume(self, queue):
print("Consuming {} ...".format(queue))
self.declare_queue(queue)
def callback(ch, method, properties, body):
print(" Received {}".format(body))
channels_layer = get_channel_layer()
print("channels_layer: {}".format(channels_layer))
# async_to_sync(channels_layer.group_send)(
channels_layer.group_send(
"gossip", {
"type": "user.gossip",
"event": "New User",
"username": body
}
)
self.channel.basic_consume(
queue=queue, on_message_callback=callback, auto_ack=False)
print(' [*] Waiting for messages. To exit press CTRL+C')
self.channel.start_consuming()