RabbitMQ交换和队列

时间:2016-12-03 16:06:49

标签: python rabbitmq

我想用RabbitMQ创建一个小型多人游戏。单个服务器可以同时拥有多个会话。我的问题是我如何区分消息队列。我有两种基本的消息类型:异步更新(发送给会话中的每个人)和同步(玩家与游戏的互动。玩家转向做某事等)。

对于异步,我使用发布 - 订阅模式。服务器是发布者,会话中的所有玩家都是订阅者。为此,我使用扇出。

对于同步我使用RPC模式,每个客户端为每个功能有2个队列,1个用于发送,1个用于接收。

我的问题是如何以一种游戏会话不会相互干扰的方式设置MQ-s。我的想法是这个分层系统:1层是服务器(服务器列表),2层是房间列表,3层是房间。什么是建立这种事情的好方法。

我目前使用https://www.rabbitmq.com/getstarted.html设置我的服务器。它正在运行,但现在我想将它扩展到多个同步会话。

 def initChannels(self):
        self.updateConnection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
        self.updateChannel = self.updateConnection.channel()
        self.updateChannel.exchange_declare(exchange='updates',type='fanout')

        self.place = threading.Thread(target=self.placeListener,args=(self.place,))
        self.bomb = threading.Thread(target=self.bombListener, args=(self.bomb,))

        self.place.start()
        self.bomb.start()

def placeListener(self, place):
    self.placeConnection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
    self.placeChannel = self.placeConnection.channel()
    self.placeChannel.queue_declare(queue='rpc_place')

    self.placeChannel.basic_qos(prefetch_count=1)
    self.placeChannel.basic_consume(place, queue='rpc_place')
    self.placeChannel.start_consuming()

这是我如何设置MQ-s的示例。它主要与图案链接相似。

0 个答案:

没有答案