日期:2014-05-18  浏览次数:20657 次

JMS怎么确保点对点通信
当web开发用多个人同时进行聊天的时候,jms怎么实现(例如:a与b聊天)在他们之间传递保证了他们能够只访问和收到彼此的通信信息。都是访问队列,那么多人点对点通信就得建立多个队列?(感觉好麻烦)。个人不是很懂jms。请指教。最好能够说具体。谢谢。
jms web开发 聊天

------解决方案--------------------
发消息时 报文里 可以包含接受方的id, 服务器根据接受方的id把消息发给特定的接受者就行了。
------解决方案--------------------
你可以不用为每一对用户都去创建一个通道,那用户量一多一个用户再和多个用户聊天那数量不好控制了.

用广播的方式来处理.

每一个用户都有一个唯一的ID,然后在创建MessageConsumer时指定过滤器.

比如

String userId = "0123456789";
String filterStr = "(USER_ID=" + userId +")";
MessageConsumer consumer = Session.createConsumer(destination,filterStr,true);

以上代码后consumer这个消息接收者就只会接收属性中"USER_ID"等于"0123456789"的消息了.

那么发送消息的时候只需要附带上这个属性就行了.如下.

String targetUserId = "0123456789";
ObjectMessage sendMessage = .....;//将要发送的消息,只是举例.
sendMessage.setStringProperty("USER_ID",targetUserId);


这样应该可以达成你的目标.
------解决方案--------------------
服务器管理所有客户端的链接,你可以去服务器端给每个链接一个标示其唯一东西,那么客户端在发送消息的时候就可以带上这个唯一标示符,服务器就可以找到指定的客户端,把消息再转发给你指定的客户端