消息从rabbitmq通道传递到java NIO通道

时间:2012-03-18 19:10:20

标签: comet rabbitmq nio

我正在构建一个应用程序的聊天组件(保存所有讨论),我计划将一个长轮询服务器作为客户端计算机和rabbitmq服务器之间的接口,它将解析格式并将消息排入由ce芹处理的作业队列(在rabbitmq上),然后通过检查数据库获取某些信息等来检查是否允许发布,将消息保存到数据库,然后再次将它们排入rabbitmq,这次要由将长轮询服务器推送到客户端计算机。

我计划从Rabbit服务器到长轮询服务器之间有一个连接,包含许多通道,每个通道都对应一个nio套接字通道,客户端机器正在另一端监听。

将使用Java Nio库编写长轮询服务器。我的问题是,将消息从AMQP通道发送到socketchannel以将其推送到客户端的有效方法是什么?

根据我对NIO的理解,唯一一次应该为OP_WRITE注册一个选择键,就是先前尝试的write()调用返回0.但是在这种情况下,我有兴趣在信息出现时写入socketchannel相应的AMQP频道。一旦数据进入相应的amqp通道,我如何提醒套接字通道,以便我可以通过套接字通道将数据发送到客户端?

1 个答案:

答案 0 :(得分:1)

只需调用write()!无需“告诉”任何SocketChannel。然后,如果write()返回零,则执行OP_WRITE。