我正在使用Node.js,Socket.io和RabbitMQ构建推送通知系统。
我的系统流程如下:
RabbitMQ是通过带有扇出交换类型的PHP脚本发布的。
Node.js服务器订阅了通过与步骤1中创建的相同的配置连接的队列。
当客户端连接到node.js服务器时,它会通过事件发送唯一ID。
然后将步骤3中发送的唯一ID与从步骤2中订阅的队列接收的消息进行比较。
如果步骤4中的条件返回true,则队列中的整个消息将发送到具有该唯一ID的客户端。因此,只有特定客户端才会收到所需的消息,而不是所有连接的客户端。
循环遍历所有连接客户端的所有唯一ID是否可行?因此,在这种情况下,队列中消耗的每条消息都将与所有连接的客户端进行比较。
我期待50到6万个连接,所以循环这些连接实际上是否可行?
或者是否可以创建50到6万个绑定到一个交换的队列?
或者我应该简单地将消息广播给所有客户端,并且会在客户端处理比较吗?
这些是唯一的解决方案,或者可能有一些不同的实现来处理这个问题。