RabbitMQ如何在我的游戏/聊天场景中很好地适应?

时间:2015-06-22 14:22:10

标签: rabbitmq

我知道有很多关于RabbitMQ的帖子,如果它是否合适而不是使用它而不是XMPP等等。但是说明RabbitMQ是强制性的,我应该如何在我的场景中使用RabbitMQ?

这里的规格: - 有许多客户可以加入一个或多个聊天室

  • 客户可以创建自己的聊天室并使用密码保护他们

  • 当客户端断开连接时,有两种可能的实现方式:1)他无法读取上一条消息; 2)他可以在登录前不超过5分钟收到消息

  • 客户可以发送私信

现在,给出这个规范,使用RabbitMQ的最佳实践是什么? RabbitMQ已经实现了什么? 我正在使用C#,但我的问题更多是关于软件架构

我已经阅读了有关不同Excanges的内容,但我怀疑使用什么以及如何组织队列。
主题交换我需要什么?我应该如何实施呢? 我的消费者(所以我的游戏客户端)每次登录服务器并将队列绑定到主题时是否应该创建队列?

如你所见,我认为我对RabbitMQ如何管理这类事情一无所知

关于未来改进的说明:RabbitMQ队列也将用于将游戏事件传达给连接的客户端,这就是为什么不考虑简单的聊天协议

更新: 也许一个扇出交换机是我需要将消息发送到我的客户将在他们登录时创建的所有队列

并创建聊天室我认为最好创建一个服务器组件来监听客户端在创建聊天室时发送到的特定队列

此时遗漏的是如何处理对rabbitmq实例和聊天频道的身份验证。 对于聊天频道,我可以将其委托给服务器组件(用户发送到队列“chat_authentication”聊天室和密码,服务器组件发送到指定的客户端队列,如果它没有问题,但这对我来说听起来不安全有人直接将自定义客户端连接到我的rabbitMQ队列,那么我该如何实现授权?

1 个答案:

答案 0 :(得分:0)

  1. 您可以为每个聊天室创建一个扇出交换,并允许用户创建其队列并绑定到它。
  2. 对于用户身份验证,您可能会考虑集成LDAP类型的解决方案。
  3. 您还可以阅读我的文章: https://techietweak.wordpress.com/2015/08/14/rabbitmq-a-cloud-based-message-oriented-middleware/

    了解RabbitMQ中的不同交流。