即时聊天技术实现方案.docx

上传人:wux****ua 文档编号:7757951 上传时间:2020-03-24 格式:DOCX 页数:11 大小:220.45KB
返回 下载 相关 举报
即时聊天技术实现方案.docx_第1页
第1页 / 共11页
即时聊天技术实现方案.docx_第2页
第2页 / 共11页
即时聊天技术实现方案.docx_第3页
第3页 / 共11页
点击查看更多>>
资源描述
即时聊天技术实现方案 编写: 蔡鑫 日期: 2012年10月12日ActiveMQ 简介1. 什么是ActiveMQActiveMQ 是Apache出品,最流行的,能力强劲的开源消息中间件, 应用中引入中间件的好处是减少服务器之间的依赖关系,提高扩展性,在没有引入消息中间件的情况可能出现如下:出现服务器多依赖的情况,不方面扩展,而引入消息中间件后如从图中可以看出引入消息中间件后,每个服务器只依赖于消息中间件,而且在应用中这种依赖关系式一种弱依赖关系2. ActiveMQ 的松耦合介绍松耦合应用在分布式应用设计中更具优势;也是对分布式应用至关重要的。3. ActiveMQ 的特性n 多种语言和协议编写客户端。语言: Java、C、C+、C#、Ruby、Perl、Python、PHP。应用协议:OpenWire、Stomp REST、WS Notification、XMPP、AMQPn 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务) n 对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性 n 通过了常见J2EE服务器(如 Geronimo、JBoss 4、GlassFish、WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上 n 支持多种传送协议:in-VM、TCP、SSL、NIO、UDP、JGroups、JXTA n 支持通过JDBC和journal提供高速的消息持久化 n 从设计上保证了高性能的集群,客户端-服务器,点对点n 支持Ajax n 支持与Axis的整合n 可以很容易得调用内嵌JMS provider,进行测试ActiveMQ 安装和下载4. 安装n 在http:/activemq.apache.org/download.html 下载5.4.0发行包,解压到需要安装ActiveMQ的文件夹,记为/path/to/activemq。 n unix环境activemq文件夹需要执行权限,执行如下命令 chmod -R 755 /path/to/activemq 5. 启动n window环境运行/path/to/activemq/bin/activemq.bat n unix环境运行/path/to/activemq/bin/activemq 6. 测试ActiveMQ默认使用的TCP连接端口是61616, 通过查看该端口的信息可以测试ActiveMQ是否成功启动n window环境运行 netstat -an|find 61616 n unix环境运行netstat -an|grep 61616 7. 监控ActiveMQ5.0版本默认启动时,启动了内置的jetty服务器,提供一个demo应用和用于监控ActiveMQ的admin应用。admin:http:/127.0.0.1:8161/admin/ demo:http:/127.0.0.1:8161/demo/ActiveMQ基础实例8. 消息生产者/通过 用户密码URL 创建接口工厂ConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,tcp:/localhost:61616);/通过连接工厂创建一个新的连接Connection connection = factory.createConnection();/通过连接接口创建一个回话Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);/根据回话接口创建有关的目标接口Destination destination = session.createQueue(Mr Yan);/回话接口再根据目标接口创建一个消息生产者接口MessageProducer messageProducer = session.createProducer(destination);/调用回话创建一个文本消息Message message = session.createTextMessage(I am very happy either.);/使用消息生产者接口将消息传送至 ActiveMQ 服务器messageProducer.send(message);session.close();connection.close();9. 消息消费者/ 通过username,password,url创建连接工厂接口ConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER,ActiveMQConnectionFactory.DEFAULT_PASSWORD,tcp:/localhost:61616);/ 通过连接工厂创建一个新的连接接口Connection connection = factory.createConnection();connection.start();/ 通过连接接口创建一个会话接口Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);/ 会话接口创建有关主题的目标接口Destination destination = session.createQueue(Mr Liu);/ 会话接口再根据目标接口来创建一个消息消费者接口MessageConsumer consumer = session.createConsumer(destination);/ 消息消费者接收消息TextMessage message = (TextMessage)consumer.receive();if (message != null) System.out.println(收到的消息: + message.getText();session.close();connection.close();10. 消息发送流程然后调用发布接口发布消息,发布过程如下:11. 消息接收流程JMS 简介12. JMS 中的概念 JMS客户端:接收或发送消息的java系统 JMS消息体:系统间发送的消息体 JMS提供商:JMS规范实现厂商 JMS管理对象:预先配置好的用于JMS客户端的JMS对象。如ConnectionFactory跟JMS服务端的连接工厂,Destination 接收和发送消息的目标地址等 JMS Domain:JMS定义了两种域模型,一种是PTP(point-to-point)即点对点消息传输模型,一种是pub/sub(publish-subscribe)即发布订阅模型。 PTP通过一个先进先出的queue实现。很多人在这个PTP概念上有所误解,所谓点对点不是指生产者和消费者只有一个。PTP如下图所示: 我们可以看到,一个或多个生产者发送消息,消息m2先抵达了queue,然后m1也发出了,并一同存在于一个先进先出的queue里面。消费者也存在一个或多个,对queue里的消息进行消费。但消息被随机的一个消费者消费且仅消费一次。 在pub/sub消息模型中,消息被广播给所有订阅者。如下图: 13. JMS 接口JMS通用接口JMS PTP接口JMS pub/sub 接口描述ConnectionFactoryQueueConnectionFactoryTopicConnectionFactory创建与JMS服务的连接ConnectionQueueConnectionTopicConnectionJMS服务的连接,可创建SessionDestinationQueueTopic发送接收消息的目标,Queue和Topic均可视为一种DestinationSessionQueueSessionTopicSessionSessionMessageProducerQueueSenderTopicPublisher消息发送者MessageConsumerQueueReceiver、QueueBrowserTopicSubscriber消息接收者/浏览者/订阅者14. JMS 接口关系图15. 聊天室主要功能1. 创建房间。2. 进入房间。3. 多人即时聊天。4. 发送文字。
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!