【发布时间】:2012-04-03 10:04:26
【问题描述】:
我正在为一个应用程序构建一个聊天组件(所有讨论都保存在其中),我计划有一个长轮询服务器作为客户端机器和 rabbitmq 服务器之间的接口,它将解析格式并将消息排入队列由 celery 处理的作业队列(在 rabbitmq 上),然后它将通过检查数据库中的某些信息等来检查是否允许发布,将消息保存到数据库,然后再次将它们排入 rabbitmq 中,这一次将由要推送到客户端机器的长轮询服务器。
我计划从rabbit服务器到长轮询服务器建立一个连接,包含许多通道,每个通道对应一个nio套接字通道,客户端机器在另一端监听。
长轮询服务器将使用 Java Nio 库编写。我的问题是,将消息从 AMQP 通道发送到套接字通道以推送给客户端的有效方法是什么?
根据我对 NIO 的理解,唯一一次应该为 OP_WRITE 注册选择键是在之前尝试的 write() 调用返回 0 时。不过,在这种情况下,我有兴趣在信息存在时写入套接字通道对应的 AMQP 通道。一旦数据进入其相应的 amqp 通道,如何提醒套接字通道,以便我可以通过套接字通道向客户端发送数据?
【问题讨论】: